ioctl_by_bdev() passes in a NULL file*, so we had better not dereference it. drivers/block/DAC960.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN drivers/block/DAC960.c~DAC960-oops-fix drivers/block/DAC960.c --- 25/drivers/block/DAC960.c~DAC960-oops-fix 2003-05-17 14:49:41.000000000 -0700 +++ 25-akpm/drivers/block/DAC960.c 2003-05-17 14:49:41.000000000 -0700 @@ -102,7 +102,7 @@ static int DAC960_ioctl(struct inode *in int drive_nr = (int)disk->private_data; struct hd_geometry g, *loc = (struct hd_geometry *)arg; - if (file->f_flags & O_NONBLOCK) + if (file && file->f_flags & O_NONBLOCK) return DAC960_UserIOCTL(inode, file, cmd, arg); if (cmd != HDIO_GETGEO || !loc) _