2005-01-25 22:41:22

by Williams, Mitch A

[permalink] [raw]
Subject: [PATCH 2/2] Disallow seeks on sysfs files.

This patch causes an error return if the user attempts to seek on a sysfs
file.

The patch was generated from 2.6.11-rc1.

Signed-off-by: Mitch Williams <[email protected]>

diff -urpN -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-25 10:28:25.000000000 -0800
@@ -307,6 +307,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:
@@ -349,7 +353,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,
};