X-Git-Url: http://bbs.cooldavid.org/git/?a=blobdiff_plain;f=drivers%2Fblock%2Fbrd.c;h=82bfd5bb4a973f316de41fb6fd05bd41226c322a;hb=2a48fc0ab24241755dc93bfd4f01d68efab47f5a;hp=1c7f63792ff8ada51626f8316064bcb5220e6c7f;hpb=613655fa39ff6957754fa8ceb8559980920eb8ee;p=net-next-2.6.git diff --git a/drivers/block/brd.c b/drivers/block/brd.c index 1c7f63792ff..82bfd5bb4a9 100644 --- a/drivers/block/brd.c +++ b/drivers/block/brd.c @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include /* invalidate_bh_lrus() */ #include @@ -55,6 +55,7 @@ struct brd_device { /* * Look up and return a brd's page for a given sector. */ +static DEFINE_MUTEX(brd_mutex); static struct page *brd_lookup_page(struct brd_device *brd, sector_t sector) { pgoff_t idx; @@ -402,7 +403,7 @@ static int brd_ioctl(struct block_device *bdev, fmode_t mode, * ram device BLKFLSBUF has special semantics, we want to actually * release and destroy the ramdisk data. */ - lock_kernel(); + mutex_lock(&brd_mutex); mutex_lock(&bdev->bd_mutex); error = -EBUSY; if (bdev->bd_openers <= 1) { @@ -419,7 +420,7 @@ static int brd_ioctl(struct block_device *bdev, fmode_t mode, error = 0; } mutex_unlock(&bdev->bd_mutex); - unlock_kernel(); + mutex_unlock(&brd_mutex); return error; }