. vfs read_only() assumes vnode->v_vmnt is non-NULL, but it can be NULL sometimes . e.g. fchmod() on UDS triggered NULL deref; add a check and add REQ_CHMOD to pfs so unix domain sockets can be fchmod()ded . add to test56 Change-Id: I83c840f101b647516897cc99fcf472116d762012
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
 | 
						|
/* This file contains the table used to map system call numbers onto the
 | 
						|
 * routines that perform them.
 | 
						|
 */
 | 
						|
 | 
						|
#define _TABLE
 | 
						|
 | 
						|
#include "fs.h"
 | 
						|
#include "inode.h"
 | 
						|
#include "buf.h"
 | 
						|
#include "uds.h"
 | 
						|
 | 
						|
/* File System Handlers (pfs) */
 | 
						|
int (*fs_call_vec[])(message *fs_m_in, message *fs_m_out) = {
 | 
						|
 | 
						|
        no_sys,             /* 0   not used */
 | 
						|
        no_sys,             /* 1   */
 | 
						|
        fs_putnode,         /* 2   */
 | 
						|
        no_sys,             /* 3   */
 | 
						|
        fs_ftrunc,          /* 4   */
 | 
						|
        no_sys,             /* 5   */
 | 
						|
	fs_chmod,           /* 6   */
 | 
						|
        no_sys,             /* 7   */
 | 
						|
        fs_stat,            /* 8   */
 | 
						|
        no_sys,             /* 9   */
 | 
						|
        no_sys,             /* 10  */
 | 
						|
        no_sys,             /* 11  */
 | 
						|
        no_sys,             /* 12  */
 | 
						|
        no_sys,	            /* 13  */
 | 
						|
        no_sys,             /* 14  */
 | 
						|
        fs_unmount,         /* 15  */
 | 
						|
	fs_sync,            /* 16  */
 | 
						|
        no_sys,             /* 17  */
 | 
						|
        no_sys,	            /* 18  */
 | 
						|
        fs_readwrite,	    /* 19  */
 | 
						|
        fs_readwrite,	    /* 20  */
 | 
						|
        no_sys,             /* 21  */
 | 
						|
        no_sys,             /* 22  */
 | 
						|
        no_sys,             /* 23  */
 | 
						|
        no_sys,             /* 24  */
 | 
						|
        no_sys,             /* 25  */
 | 
						|
        no_sys,             /* 26  */
 | 
						|
        no_sys,             /* 27  */
 | 
						|
        no_sys,	            /* 28  */
 | 
						|
        fs_newnode,	    /* 29  */
 | 
						|
        no_sys,	            /* 30  */
 | 
						|
        no_sys,	            /* 31  */
 | 
						|
	no_sys,             /* 32 */
 | 
						|
};
 | 
						|
 | 
						|
/* Device Handlers (/dev/uds) */
 | 
						|
int (*dev_call_vec[])(message *dev_m_in, message *dev_m_out) = {
 | 
						|
 | 
						|
        uds_cancel,         /* 0  CANCEL */
 | 
						|
        no_sys,             /* 1   */
 | 
						|
        no_sys,             /* 2   */
 | 
						|
        no_sys,             /* 3   */
 | 
						|
        no_sys,             /* 4   */
 | 
						|
        no_sys,             /* 5   */
 | 
						|
	uds_open,           /* 6  DEV_OPEN */
 | 
						|
        uds_close,          /* 7  DEV_CLOSE */
 | 
						|
        no_sys,             /* 8   */
 | 
						|
        no_sys,             /* 9   */
 | 
						|
        no_sys,             /* 10 TTY_SETPGRP */
 | 
						|
        no_sys,             /* 11 TTY_EXIT */
 | 
						|
        uds_select,         /* 12 DEV_SELECT */
 | 
						|
        no_sys,             /* 13 DEV_STATUS */
 | 
						|
        uds_open,           /* 14 DEV_REOPEN */
 | 
						|
        no_sys,             /* 15  */
 | 
						|
	no_sys,             /* 16  */
 | 
						|
        no_sys,             /* 17  */
 | 
						|
        no_sys,	            /* 18  */
 | 
						|
        no_sys,		    /* 19  */
 | 
						|
        uds_read,	    /* 20 DEV_READ_S */
 | 
						|
        uds_write,          /* 21 DEV_WRITE_S */
 | 
						|
        no_sys,             /* 22 DEV_SCATTER_S */
 | 
						|
        no_sys,             /* 23 DEV_GATHER_S */
 | 
						|
        uds_ioctl,          /* 24 DEV_IOCTL_S */
 | 
						|
        no_sys,             /* 25 DEV_MMAP_S */
 | 
						|
};
 |