Re: BUG: Null pointer dereference in fs/open.c

From: William Heimbigner
Date: Tue Apr 24 2007 - 01:45:03 EST


On Mon, 23 Apr 2007, Andrew Morton wrote:
On Tue, 24 Apr 2007 05:10:04 +0000 (GMT) William Heimbigner <icxcnika@xxxxxxxxxx> wrote:

--- a/drivers/block/pktcdvd.c~packet-fix-error-handling
+++ a/drivers/block/pktcdvd.c
@@ -777,7 +777,8 @@ static int pkt_generic_packet(struct pkt
rq->cmd_flags |= REQ_QUIET;

blk_execute_rq(rq->q, pd->bdev->bd_disk, rq, 0);
- ret = rq->errors;
+ if (rq->errors)
+ ret = -EIO;
out:
blk_put_request(rq);
return ret;
_

This patch fixes (or conceals?) the oops.


Fixes. But does the packet driver actually work OK for you? Writes
files and stuff like that?

Short answer, no.

Long answer:
# pktsetup 0 /dev/hdc
[11508.006818] =============================================
[11508.028248] [ INFO: possible recursive locking detected ]
[11508.044413] 2.6.21-rc7-git5 #23
[11508.053818] ---------------------------------------------
[11508.069989] vol_id/4315 is trying to acquire lock:
[11508.084332] (&bdev->bd_mutex){--..}, at: [<c019a82f>] do_open+0x4f/0x2c0
[11508.104867]
[11508.104868] but task is already holding lock:
[11508.122359] (&bdev->bd_mutex){--..}, at: [<c019a82f>] do_open+0x4f/0x2c0
[11508.142862]
[11508.142863] other info that might help us debug this:
[11508.162460] 2 locks held by vol_id/4315:
[11508.174212] #0: (&bdev->bd_mutex){--..}, at: [<c019a82f>] do_open+0x4f/0x2c0
[11508.196066] #1: (&ctl_mutex#2){--..}, at: [<c04c221c>] mutex_lock+0x1c/0x20
[11508.217720]
[11508.217721] stack backtrace:
[11508.230821] [<c010521a>] show_trace_log_lvl+0x1a/0x30
[11508.246255] [<c0105952>] show_trace+0x12/0x20
[11508.259619] [<c0105a46>] dump_stack+0x16/0x20
[11508.272974] [<c013e410>] __lock_acquire+0xbc0/0x1040
[11508.288157] [<c013e900>] lock_acquire+0x70/0x90
[11508.302035] [<c04c229e>] mutex_lock_nested+0x7e/0x2e0
[11508.317475] [<c019a82f>] do_open+0x4f/0x2c0
[11508.330314] [<c019ab19>] __blkdev_get+0x79/0x90
[11508.344189] [<c019ab45>] blkdev_get+0x15/0x20
[11508.357554] [<c03298f7>] pkt_open+0xb7/0xd80
[11508.370651] [<c019a865>] do_open+0x85/0x2c0
[11508.383491] [<c019acc3>] blkdev_open+0x33/0x70
[11508.397107] [<c0173ce4>] __dentry_open+0xf4/0x220
[11508.411509] [<c0173eb5>] nameidata_to_filp+0x35/0x40
[11508.426684] [<c0173f09>] do_filp_open+0x49/0x50
[11508.440567] [<c0173f57>] do_sys_open+0x47/0xd0
[11508.454188] [<c017401c>] sys_open+0x1c/0x20
[11508.467023] [<c01041c6>] sysenter_past_esp+0x5f/0x99
[11508.482202] =======================
[11508.520800] pktcdvd: pkt_get_last_written failed

# mkudffs /dev/pktcdvd/0
[11539.953560] pktcdvd: pkt_get_last_written failed
trying to change type of multiple extents

I get the same error with /dev/hdd as well (hdc and hdd are both dvd burners, hdd has a cd-rw and hdc had a dvd-rw)


William Heimbigner
icxcnika@xxxxxxxxxx
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/