forked from luck/tmp_suning_uos_patched
[PATCH] packet driver permission checking fix
If you tried to open a packet device first in read-only mode and then a second time in read-write mode, the second open succeeded even though the device was not correctly set up for writing. If you then tried to write data to the device, the writes would fail with I/O errors. This patch prevents that problem by making the second open fail with -EBUSY. Signed-off-by: Peter Osterlund <petero2@telia.com> Cc: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
1c7878f024
commit
46f4e1b7d5
|
@ -2021,7 +2021,13 @@ static int pkt_open(struct inode *inode, struct file *file)
|
|||
BUG_ON(pd->refcnt < 0);
|
||||
|
||||
pd->refcnt++;
|
||||
if (pd->refcnt == 1) {
|
||||
if (pd->refcnt > 1) {
|
||||
if ((file->f_mode & FMODE_WRITE) &&
|
||||
!test_bit(PACKET_WRITABLE, &pd->flags)) {
|
||||
ret = -EBUSY;
|
||||
goto out_dec;
|
||||
}
|
||||
} else {
|
||||
if (pkt_open_dev(pd, file->f_mode & FMODE_WRITE)) {
|
||||
ret = -EIO;
|
||||
goto out_dec;
|
||||
|
|
Loading…
Reference in New Issue
Block a user