Re: [PATCH 1/3] disallow seeks and appends on sysfs files

From: Greg KH
Date: Sat Jan 22 2005 - 03:17:25 EST


On Fri, Jan 21, 2005 at 02:49:39PM -0800, Mitch Williams wrote:
> This patch causes sysfs to return errors if the caller attempts to append
> to or seek on a sysfs file.

And what happens to it today if you do either of these?

Also, isn't this two different things?

>
> Generated from 2.6.11-rc1.
>
> Signed-off-by: Mitch Williams <mitch.a.williams@xxxxxxxxx>
>
> diff -uprN -X dontdiff linux-2.6.11-clean/fs/sysfs/file.c linux-2.6.11/fs/sysfs/file.c
> --- linux-2.6.11-clean/fs/sysfs/file.c 2004-12-24 13:33:50.000000000 -0800
> +++ linux-2.6.11/fs/sysfs/file.c 2005-01-21 13:09:21.000000000 -0800
> @@ -281,6 +281,11 @@ static int check_perm(struct inode * ino
> if (!ops)
> goto Eaccess;
>
> + /* Is the file is open for append? Sorry, we don't do that. */
> + if (file->f_flags & O_APPEND) {
> + goto Einval;
> + }

Please, no {} for one line if statements. Like the one above it :)



> +
> /* File needs write support.
> * The inode's perms must say it's ok,
> * and we must have a store method.
> @@ -312,6 +302,10 @@ static int check_perm(struct inode * ino
> file->private_data = buffer;
> } else
> error = -ENOMEM;
> +
> + /* Set mode bits to disallow seeking. */
> + file->f_mode &= ~(FMODE_LSEEK | FMODE_PREAD | FMODE_PWRITE);
> +
> goto Done;
>
> Einval:
> @@ -368,7 +343,7 @@ static int sysfs_release(struct inode *
> struct file_operations sysfs_file_operations = {
> .read = sysfs_read_file,
> .write = sysfs_write_file,
> - .llseek = generic_file_llseek,
> + .llseek = no_llseek,
> .open = sysfs_open_file,
> .release = sysfs_release,
> };

--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/