# Re: \[PATCH 1/2\] block: make \_\_register\_blkdev() return an error

- From: Luis Chamberlain \<mcgrof@kernel.org\>
- Date: 2021-09-05 18:11:42 
- List: linux-block
- Page: https://ratatoskr.run/linux-block/2021/09/6405236
- Thread: https://ratatoskr.run/linux-block/2021/09/213668/t.md

```text
On Sat, Sep 04, 2021 at 11:49:06AM +0900, Tetsuo Handa wrote:
> On 2021/09/04 10:39, Luis Chamberlain wrote:
> > diff --git a/fs/block_dev.c b/fs/block_dev.c
> > index 45df6cbccf12..81a4738910a8 100644
> > --- a/fs/block_dev.c
> > +++ b/fs/block_dev.c
> > @@ -1144,10 +1144,13 @@ struct block_device *blkdev_get_no_open(dev_t dev)
> >  {
> >  	struct block_device *bdev;
> >  	struct inode *inode;
> > +	int ret;
> >  
> >  	inode = ilookup(blockdev_superblock, dev);
> >  	if (!inode) {
> > -		blk_request_module(dev);
> > +		ret = blk_request_module(dev);
> > +		if (ret)
> > +			return NULL;
> 
> Since e.g. loop_add() from loop_probe() returns -EEXIST when /dev/loop$num already
> exists (e.g. raced with ioctl(LOOP_CTL_ADD)), isn't unconditionally failing an over-failing?

It's not clear to me how. What do we loose by capturing the failure on
blk_request_module()?

  Luis
```
