aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block
diff options
context:
space:
mode:
authorPeter Osterlund <petero2@telia.com>2005-09-13 04:25:27 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-09-13 11:22:30 -0400
commitd0272e78eee4dc53c887fd132e9035daf037d423 (patch)
treeb17c64ef5cc44adef6879c03d09e7291887ca874 /drivers/block
parentb9f0bd0895c040f69a0440286b64725f74f5b387 (diff)
[PATCH] pktcdvd: fix bogus BUG_ON
In the packet writing driver, if the drive reports a packet size larger than the driver can handle, bail out safely instead of triggering a BUG_ON. Signed-off-by: Peter Osterlund <petero2@telia.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/block')
-rw-r--r--drivers/block/pktcdvd.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
index 7b838342f0a3..58d01c820799 100644
--- a/drivers/block/pktcdvd.c
+++ b/drivers/block/pktcdvd.c
@@ -946,7 +946,6 @@ try_next_bio:
946 pd->current_sector = zone + pd->settings.size; 946 pd->current_sector = zone + pd->settings.size;
947 pkt->sector = zone; 947 pkt->sector = zone;
948 pkt->frames = pd->settings.size >> 2; 948 pkt->frames = pd->settings.size >> 2;
949 BUG_ON(pkt->frames > PACKET_MAX_SIZE);
950 pkt->write_size = 0; 949 pkt->write_size = 0;
951 950
952 /* 951 /*
@@ -1636,6 +1635,10 @@ static int pkt_probe_settings(struct pktcdvd_device *pd)
1636 printk("pktcdvd: detected zero packet size!\n"); 1635 printk("pktcdvd: detected zero packet size!\n");
1637 pd->settings.size = 128; 1636 pd->settings.size = 128;
1638 } 1637 }
1638 if (pd->settings.size > PACKET_MAX_SECTORS) {
1639 printk("pktcdvd: packet size is too big\n");
1640 return -ENXIO;
1641 }
1639 pd->settings.fp = ti.fp; 1642 pd->settings.fp = ti.fp;
1640 pd->offset = (be32_to_cpu(ti.track_start) << 2) & (pd->settings.size - 1); 1643 pd->offset = (be32_to_cpu(ti.track_start) << 2) & (pd->settings.size - 1);
1641 1644