Re: [PATCH v1 7/8] null_blk: add error handling support for add_disk()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, May 12, 2021 at 07:28:16PM +0200, Hannes Reinecke wrote:
> On 5/12/21 7:20 PM, Luis Chamberlain wrote:
> > On Wed, May 12, 2021 at 07:12:03PM +0200, Hannes Reinecke wrote:
> > > On 5/12/21 6:47 PM, Luis Chamberlain wrote:
> > > > On Wed, May 12, 2021 at 05:16:39PM +0200, Hannes Reinecke wrote:
> > > > > On 5/12/21 8:46 AM, Luis Chamberlain wrote:
> > > > > > We never checked for errors on add_disk() as this function
> > > > > > returned void. Now that this is fixed, use the shiny new
> > > > > > error handling.
> > > > > > 
> > > > > > Signed-off-by: Luis Chamberlain <mcgrof@xxxxxxxxxx>
> > > > > > ---
> > > > > >     drivers/block/null_blk/main.c | 9 +++++++--
> > > > > >     1 file changed, 7 insertions(+), 2 deletions(-)
> > > > > > 
> > > > > > diff --git a/drivers/block/null_blk/main.c b/drivers/block/null_blk/main.c
> > > > > > index 5f006d9e1472..2346d1292b26 100644
> > > > > > --- a/drivers/block/null_blk/main.c
> > > > > > +++ b/drivers/block/null_blk/main.c
> > > > > > @@ -1699,6 +1699,7 @@ static int init_driver_queues(struct nullb *nullb)
> > > > > >     static int null_gendisk_register(struct nullb *nullb)
> > > > > >     {
> > > > > > +	int ret;
> > > > > >     	sector_t size = ((sector_t)nullb->dev->size * SZ_1M) >> SECTOR_SHIFT;
> > > > > >     	struct gendisk *disk;
> > > > > > @@ -1719,13 +1720,17 @@ static int null_gendisk_register(struct nullb *nullb)
> > > > > >     	strncpy(disk->disk_name, nullb->disk_name, DISK_NAME_LEN);
> > > > > >     	if (nullb->dev->zoned) {
> > > > > > -		int ret = null_register_zoned_dev(nullb);
> > > > > > +		ret = null_register_zoned_dev(nullb);
> > > > > >     		if (ret)
> > > > > >     			return ret;
> > > > > >     	}
> > > > > > -	add_disk(disk);
> > > > > > +	ret = add_disk(disk);
> > > > > > +	if (ret) {
> > > > > 
> > > > > unregister_zoned_device() ?
> > > > 
> > > > That function does not exist, do you mean null_free_zoned_dev()? If so
> > > > that is done by the caller.
> > > > 
> > > What I intended to say is that you are calling 'null_register_zoned_dev()'
> > > at one point, but don't call a cleanup function if there is an error later
> > > in the path, leaving the caller to guess whether null_register_zoned_dev()
> > > has been called or not.
> > > So we should call the cleanup function here, too.
> > 
> > The cleanup for zone stuff is done on the caller.
> > 
> My point being: how does he know?

The person who is maintainer of the code would.

> The zone stuff might or might not be initialized.
> Why not do the cleanup action in the error path of this function?

Because its not currently allocated in that function, its done in
the caller function.

  Luis



[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux