diff -urN linux-2.6.0-test3.org/drivers/block/paride/pd.c linux-2.6.0-test3/drivers/block/paride/pd.c --- linux-2.6.0-test3.org/drivers/block/paride/pd.c 2003-08-10 14:31:43.000000000 +0000 +++ linux-2.6.0-test3/drivers/block/paride/pd.c 2003-08-10 14:41:00.000000000 +0000 @@ -654,7 +654,7 @@ return pd_identify(disk); } -static struct request_queue pd_queue; +static struct request_queue *pd_queue; static int pd_detect(void) { @@ -704,7 +704,7 @@ set_capacity(p, disk->capacity); disk->gd = p; p->private_data = disk; - p->queue = &pd_queue; + p->queue = pd_queue; add_disk(p); } } @@ -782,7 +782,7 @@ spin_lock_irqsave(&pd_lock, saved_flags); end_request(pd_req, success); pd_busy = 0; - do_pd_request(&pd_queue); + do_pd_request(pd_queue); spin_unlock_irqrestore(&pd_lock, saved_flags); } @@ -893,8 +893,12 @@ if (register_blkdev(major, name)) return -1; - blk_init_queue(&pd_queue, do_pd_request, &pd_lock); - blk_queue_max_sectors(&pd_queue, cluster); + pd_queue = blk_init_queue(do_pd_request, &pd_lock); + if (!pd_queue) { + unregister_blkdev(major,name); + return -1; + } + blk_queue_max_sectors(pd_queue, cluster); printk("%s: %s version %s, major %d, cluster %d, nice %d\n", name, name, PD_VERSION, major, cluster, nice); @@ -920,7 +924,7 @@ pi_release(disk->pi); } } - blk_cleanup_queue(&pd_queue); + blk_cleanup_queue(pd_queue); } MODULE_LICENSE("GPL");