首页 > 解决方案 > blk_get_request 在未分区的块设备上使用时崩溃

问题描述

struct block_device *bdev = lookup_bdev("/dev/sdc");
struct request_queue *rq = bdev_get_queue(bdev);
req = blk_get_request(rq, READ, __GFP_RECLAIM);

当我在 /dev/sdc 上有分区时,上面的代码工作正常,但当该分区不存在时崩溃。

奇怪的是,如果我删除分区,则此代码可以正常工作而不会崩溃。直到我重新启动机器。

[ 2238.666563] Hi. /dev/sdc
[ 2238.666591] BUG: unable to handle kernel NULL pointer dereference at 00000000000003e0
[ 2238.666600] IP: [<ffffffffa06e7029>] local_block_execute+0x29/0xe6 [inquiry]
[ 2238.666610] PGD 80000000b6a80067 PUD b5bb7067 PMD 0
[ 2238.666616] Oops: 0000 [#1] SMP

标签: clinuxlinux-kernellinux-device-driver

解决方案


推荐阅读