]> err.no Git - linux-2.6/blobdiff - drivers/block/pktcdvd.c
Automatic merge of /spare/repo/netdev-2.6 branch starfire
[linux-2.6] / drivers / block / pktcdvd.c
index b9a6b7ad64f383c4056a3d9ff9d7b35dc56209e2..bc56770bcc90889338810134bba163530e9f72d1 100644 (file)
@@ -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;