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 <[EMAIL PROTECTED]>
> 
> 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 [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to