diff options
-rw-r--r-- | drivers/block/pktcdvd.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c index b9a6b7ad64f3..bc56770bcc90 100644 --- a/drivers/block/pktcdvd.c +++ b/drivers/block/pktcdvd.c | |||
@@ -2021,7 +2021,13 @@ static int pkt_open(struct inode *inode, struct file *file) | |||
2021 | BUG_ON(pd->refcnt < 0); | 2021 | BUG_ON(pd->refcnt < 0); |
2022 | 2022 | ||
2023 | pd->refcnt++; | 2023 | pd->refcnt++; |
2024 | if (pd->refcnt == 1) { | 2024 | if (pd->refcnt > 1) { |
2025 | if ((file->f_mode & FMODE_WRITE) && | ||
2026 | !test_bit(PACKET_WRITABLE, &pd->flags)) { | ||
2027 | ret = -EBUSY; | ||
2028 | goto out_dec; | ||
2029 | } | ||
2030 | } else { | ||
2025 | if (pkt_open_dev(pd, file->f_mode & FMODE_WRITE)) { | 2031 | if (pkt_open_dev(pd, file->f_mode & FMODE_WRITE)) { |
2026 | ret = -EIO; | 2032 | ret = -EIO; |
2027 | goto out_dec; | 2033 | goto out_dec; |