[PATCH] fuse: clean up request size limit checking
Change the way a too large request is handled. Until now in this case the device read returned -EINVAL and the operation returned -EIO. Make it more flexibible by not returning -EINVAL from the read, but restarting it instead. Also remove the fixed limit on setxattr data and let the filesystem provide as large a read buffer as it needs to handle the extended attribute data. The symbolic link length is already checked by VFS to be less than PATH_MAX, so the extra check against FUSE_SYMLINK_MAX is not needed. The check in fuse_create_open() against FUSE_NAME_MAX is not needed, since the dentry has already been looked up, and hence the name already checked. Signed-off-by: Miklos Szeredi <miklos@szeredi.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:

committed by
Linus Torvalds

parent
248d86e87d
commit
1d3d752b47
@@ -485,7 +485,7 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent)
|
||||
fc->max_read = d.max_read;
|
||||
if (fc->max_read / PAGE_CACHE_SIZE < fc->bdi.ra_pages)
|
||||
fc->bdi.ra_pages = fc->max_read / PAGE_CACHE_SIZE;
|
||||
fc->max_write = FUSE_MAX_IN / 2;
|
||||
fc->max_write = FUSE_MAX_WRITE;
|
||||
|
||||
err = -ENOMEM;
|
||||
root = get_root_inode(sb, d.rootmode);
|
||||
|
Reference in New Issue
Block a user