Commit da0bafb2 authored by Luis Chamberlain's avatar Luis Chamberlain Committed by Li Nan
Browse files

block: return errors from disk_alloc_events

mainline inclusion
from mainline-v5.15-rc1
commit 92e7755e
category: bugfix
bugzilla: 188733

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=92e7755ebc69233e25a2d1b760aeff536dc4016b



----------------------------------------

Prepare for proper error handling in add_disk.

Signed-off-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
[hch: split from a larger patch]
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Link: https://lore.kernel.org/r/20210818144542.19305-9-hch@lst.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
conflict:
  block/genhd.c
Signed-off-by: default avatarZhong Jinghua <zhongjinghua@huawei.com>
Signed-off-by: default avatarLi Nan <linan122@huawei.com>
parent 51dfbb41
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@ static DEFINE_IDR(ext_devt_idr);

static void disk_check_events(struct disk_events *ev,
			      unsigned int *clearing_ptr);
static void disk_alloc_events(struct gendisk *disk);
static int disk_alloc_events(struct gendisk *disk);
static void disk_add_events(struct gendisk *disk);
static void disk_del_events(struct gendisk *disk);
static void disk_release_events(struct gendisk *disk);
@@ -2396,17 +2396,17 @@ module_param_cb(events_dfl_poll_msecs, &disk_events_dfl_poll_msecs_param_ops,
/*
 * disk_{alloc|add|del|release}_events - initialize and destroy disk_events.
 */
static void disk_alloc_events(struct gendisk *disk)
static int disk_alloc_events(struct gendisk *disk)
{
	struct disk_events *ev;

	if (!disk->fops->check_events || !disk->events)
		return;
		return 0;

	ev = kzalloc(sizeof(*ev), GFP_KERNEL);
	if (!ev) {
		pr_warn("%s: failed to initialize events\n", disk->disk_name);
		return;
		return -ENOMEM;
	}

	INIT_LIST_HEAD(&ev->node);
@@ -2418,6 +2418,7 @@ static void disk_alloc_events(struct gendisk *disk)
	INIT_DELAYED_WORK(&ev->dwork, disk_events_workfn);

	disk->ev = ev;
	return 0;
}

static void disk_add_events(struct gendisk *disk)