• Magnus Deininger's avatar
    9p: fix device file handling · 57c7b4e6
    Magnus Deininger authored
    In v9fs_get_inode(), for block, as well as char devices (in theory), 
    the function init_special_inode() is called to set up callback functions 
    for file ops. this function uses the file mode's value to determine whether 
    to use block or char dev functions. In v9fs_inode_from_fid(), the function 
    p9mode2unixmode() is used, but for all devices it initially returns S_IFBLK, 
    then uses v9fs_get_inode() to initialise a new inode, then finally uses 
    v9fs_stat2inode(), which would determine whether the inode is a block or 
    character device. However, at that point init_special_inode() had already 
    decided to use the block device functions, so even if the inode's mode is 
    turned to a character device, the block functions are still used to operate 
    on them. The attached patch simply calls init_special_inode() again for devices 
    after parsing device node data in v9fs_stat2inode() so that the proper functions 
    are used.
    Signed-off-by: default avatarEric Van Hensbergen <ericvh@gmail.com>
    
    
    57c7b4e6
vfs_inode.c 25.3 KB