瀏覽代碼

[PATCH] Fix potential OOPs in blkdev_open()

blkdev_open() calls bc_acquire() to get a struct block_device.  Since
bc_acquire() may return NULL when system is out of memory an appropriate
check is required.

Signed-off-by: Pavel Emelianov <xemul@openvz.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Pavel Emelianov 18 年之前
父節點
當前提交
6a2aae06cc
共有 1 個文件被更改,包括 2 次插入0 次删除
  1. 2 0
      fs/block_dev.c

+ 2 - 0
fs/block_dev.c

@@ -1131,6 +1131,8 @@ static int blkdev_open(struct inode * inode, struct file * filp)
 	filp->f_flags |= O_LARGEFILE;
 	filp->f_flags |= O_LARGEFILE;
 
 
 	bdev = bd_acquire(inode);
 	bdev = bd_acquire(inode);
+	if (bdev == NULL)
+		return -ENOMEM;
 
 
 	res = do_open(bdev, filp, BD_MUTEX_NORMAL);
 	res = do_open(bdev, filp, BD_MUTEX_NORMAL);
 	if (res)
 	if (res)