Skip to content

Commit

Permalink
ieee1394: mark char device files as not seekable
Browse files Browse the repository at this point in the history
The
  - raw1394   (/dev/raw1394),
  - video1394 (/dev/video1394/*),
  - dv1394    (/dev/dv1394/*)
character device file ABIs do not make any use of lseek(), pread(), or
pwrite().  Therefore use nonseekable_open() and, redundantly, set
file_operations.llseek to no_llseek to remove any doubt whether the BKL-
grabbing default_llseek handler is used.

Although all this is legacy code which should be left in peace until it
is eventually removed (as it is superseded by firewire-core's
<linux/firewire-cdev.h> ABI), this change seems still worth doing to
further minimize the presence of BKL usage in the kernel.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
  • Loading branch information
Stefan Richter committed Apr 10, 2010
1 parent 3ac26b2 commit 7cfe21a
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 8 deletions.
11 changes: 6 additions & 5 deletions drivers/ieee1394/dv1394.c
Original file line number Diff line number Diff line change
Expand Up @@ -1824,7 +1824,7 @@ static int dv1394_open(struct inode *inode, struct file *file)
"and will not be available in the new firewire driver stack. "
"Try libraw1394 based programs instead.\n", current->comm);

return 0;
return nonseekable_open(inode, file);
}


Expand Down Expand Up @@ -2153,17 +2153,18 @@ static struct cdev dv1394_cdev;
static const struct file_operations dv1394_fops=
{
.owner = THIS_MODULE,
.poll = dv1394_poll,
.poll = dv1394_poll,
.unlocked_ioctl = dv1394_ioctl,
#ifdef CONFIG_COMPAT
.compat_ioctl = dv1394_compat_ioctl,
#endif
.mmap = dv1394_mmap,
.open = dv1394_open,
.write = dv1394_write,
.read = dv1394_read,
.write = dv1394_write,
.read = dv1394_read,
.release = dv1394_release,
.fasync = dv1394_fasync,
.fasync = dv1394_fasync,
.llseek = no_llseek,
};


Expand Down
3 changes: 2 additions & 1 deletion drivers/ieee1394/raw1394.c
Original file line number Diff line number Diff line change
Expand Up @@ -2834,7 +2834,7 @@ static int raw1394_open(struct inode *inode, struct file *file)

file->private_data = fi;

return 0;
return nonseekable_open(inode, file);
}

static int raw1394_release(struct inode *inode, struct file *file)
Expand Down Expand Up @@ -3035,6 +3035,7 @@ static const struct file_operations raw1394_fops = {
.poll = raw1394_poll,
.open = raw1394_open,
.release = raw1394_release,
.llseek = no_llseek,
};

static int __init init_raw1394(void)
Expand Down
5 changes: 3 additions & 2 deletions drivers/ieee1394/video1394.c
Original file line number Diff line number Diff line change
Expand Up @@ -1239,7 +1239,7 @@ static int video1394_open(struct inode *inode, struct file *file)
ctx->current_ctx = NULL;
file->private_data = ctx;

return 0;
return nonseekable_open(inode, file);
}

static int video1394_release(struct inode *inode, struct file *file)
Expand Down Expand Up @@ -1287,7 +1287,8 @@ static const struct file_operations video1394_fops=
.poll = video1394_poll,
.mmap = video1394_mmap,
.open = video1394_open,
.release = video1394_release
.release = video1394_release,
.llseek = no_llseek,
};

/*** HOTPLUG STUFF **********************************************************/
Expand Down

0 comments on commit 7cfe21a

Please sign in to comment.