diff mbox series

block: switch to pr_warn() in __device_add_disk()

Message ID 20201011130347.562264-1-rkovhaev@gmail.com (mailing list archive)
State New, archived
Headers show
Series block: switch to pr_warn() in __device_add_disk() | expand

Commit Message

Rustam Kovhaev Oct. 11, 2020, 1:03 p.m. UTC
syzbot triggered a warning while fuzzing with failslab fault injection
enabled
let's convert WARN_ON() to pr_warn()

Reported-and-tested-by: syzbot+f41893bb8c45cd18cf08@syzkaller.appspotmail.com
Link: https://syzkaller.appspot.com/bug?extid=f41893bb8c45cd18cf08
Signed-off-by: Rustam Kovhaev <rkovhaev@gmail.com>
---
 block/genhd.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Hannes Reinecke Oct. 11, 2020, 2:53 p.m. UTC | #1
On 10/11/20 3:03 PM, Rustam Kovhaev wrote:
> syzbot triggered a warning while fuzzing with failslab fault injection
> enabled
> let's convert WARN_ON() to pr_warn()
> 
> Reported-and-tested-by: syzbot+f41893bb8c45cd18cf08@syzkaller.appspotmail.com
> Link: https://syzkaller.appspot.com/bug?extid=f41893bb8c45cd18cf08
> Signed-off-by: Rustam Kovhaev <rkovhaev@gmail.com>
> ---
>   block/genhd.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/block/genhd.c b/block/genhd.c
> index 99c64641c314..be9ce35cf0fe 100644
> --- a/block/genhd.c
> +++ b/block/genhd.c
> @@ -822,7 +822,8 @@ static void __device_add_disk(struct device *parent, struct gendisk *disk,
>   		/* Register BDI before referencing it from bdev */
>   		dev->devt = devt;
>   		ret = bdi_register(bdi, "%u:%u", MAJOR(devt), MINOR(devt));
> -		WARN_ON(ret);
> +		if (ret)
> +			pr_warn("%s: failed to register backing dev info\n", disk->disk_name);
>   		bdi_set_owner(bdi, dev);
>   		blk_register_region(disk_devt(disk), disk->minors, NULL,
>   				    exact_match, exact_lock, disk);
> 
Please, don't. Where is the point in continuing here?
I'd rather have it fixed up properly, either by having a return value to 
__device_add_disk() or by allowing the caller to check (eg by checking 
GENHD_FL_UP) if the call succeeded.

Cheers,

Hannes
Rustam Kovhaev Oct. 11, 2020, 3:32 p.m. UTC | #2
On Sun, Oct 11, 2020 at 04:53:22PM +0200, Hannes Reinecke wrote:
> On 10/11/20 3:03 PM, Rustam Kovhaev wrote:
> > syzbot triggered a warning while fuzzing with failslab fault injection
> > enabled
> > let's convert WARN_ON() to pr_warn()
> > 
> > Reported-and-tested-by: syzbot+f41893bb8c45cd18cf08@syzkaller.appspotmail.com
> > Link: https://syzkaller.appspot.com/bug?extid=f41893bb8c45cd18cf08
> > Signed-off-by: Rustam Kovhaev <rkovhaev@gmail.com>
> > ---
> >   block/genhd.c | 3 ++-
> >   1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/block/genhd.c b/block/genhd.c
> > index 99c64641c314..be9ce35cf0fe 100644
> > --- a/block/genhd.c
> > +++ b/block/genhd.c
> > @@ -822,7 +822,8 @@ static void __device_add_disk(struct device *parent, struct gendisk *disk,
> >   		/* Register BDI before referencing it from bdev */
> >   		dev->devt = devt;
> >   		ret = bdi_register(bdi, "%u:%u", MAJOR(devt), MINOR(devt));
> > -		WARN_ON(ret);
> > +		if (ret)
> > +			pr_warn("%s: failed to register backing dev info\n", disk->disk_name);
> >   		bdi_set_owner(bdi, dev);
> >   		blk_register_region(disk_devt(disk), disk->minors, NULL,
> >   				    exact_match, exact_lock, disk);
> > 
> Please, don't. Where is the point in continuing here?
> I'd rather have it fixed up properly, either by having a return value to
> __device_add_disk() or by allowing the caller to check (eg by checking
> GENHD_FL_UP) if the call succeeded.
thank you for the review, it makes sense.
diff mbox series

Patch

diff --git a/block/genhd.c b/block/genhd.c
index 99c64641c314..be9ce35cf0fe 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -822,7 +822,8 @@  static void __device_add_disk(struct device *parent, struct gendisk *disk,
 		/* Register BDI before referencing it from bdev */
 		dev->devt = devt;
 		ret = bdi_register(bdi, "%u:%u", MAJOR(devt), MINOR(devt));
-		WARN_ON(ret);
+		if (ret)
+			pr_warn("%s: failed to register backing dev info\n", disk->disk_name);
 		bdi_set_owner(bdi, dev);
 		blk_register_region(disk_devt(disk), disk->minors, NULL,
 				    exact_match, exact_lock, disk);