On Wed, Aug 18, 2021 at 03:55:44AM +0300, Dmitry Osipenko wrote: > +static int mmc_blk_alternative_gpt_sector(struct block_device *bdev, > + sector_t *sector) > +{ > + struct mmc_card *card = mmc_bdev_to_card(bdev); > + > + if (!card) > + return -ENODEV; > + > + if (!card->host->ops->alternative_gpt_sector) > + return -EOPNOTSUPP; > + > + return card->host->ops->alternative_gpt_sector(card, sector); > +} > + > +static struct mmc_card *mmc_bdev_to_card(struct block_device *bdev) > +{ > + struct mmc_blk_data *md; > + > + if (bdev->bd_disk->fops != &mmc_bdops) > + return NULL; No need for this check bow that it is only called through mmc_bdops. > + > + md = mmc_blk_get(bdev->bd_disk); > + if (!md) > + return NULL; > + > + return md->queue.card; > +} This reference seems to never be dropped anywhere.