diff options
Diffstat (limited to 'drivers/mmc/core/block.c')
| -rw-r--r-- | drivers/mmc/core/block.c | 24 | 
1 files changed, 13 insertions, 11 deletions
| diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c index 32d49100dff5..64a3492e8002 100644 --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c @@ -144,7 +144,7 @@ struct mmc_blk_data {  static dev_t mmc_rpmb_devt;  /* Bus type for RPMB character devices */ -static struct bus_type mmc_rpmb_bus_type = { +static const struct bus_type mmc_rpmb_bus_type = {  	.name = "mmc_rpmb",  }; @@ -206,7 +206,7 @@ static void mmc_blk_kref_release(struct kref *ref)  	int devidx;  	devidx = mmc_get_devidx(md->disk); -	ida_simple_remove(&mmc_blk_ida, devidx); +	ida_free(&mmc_blk_ida, devidx);  	mutex_lock(&open_lock);  	md->disk->private_data = NULL; @@ -874,10 +874,11 @@ static const struct block_device_operations mmc_bdops = {  static int mmc_blk_part_switch_pre(struct mmc_card *card,  				   unsigned int part_type)  { -	const unsigned int mask = EXT_CSD_PART_CONFIG_ACC_RPMB; +	const unsigned int mask = EXT_CSD_PART_CONFIG_ACC_MASK; +	const unsigned int rpmb = EXT_CSD_PART_CONFIG_ACC_RPMB;  	int ret = 0; -	if ((part_type & mask) == mask) { +	if ((part_type & mask) == rpmb) {  		if (card->ext_csd.cmdq_en) {  			ret = mmc_cmdq_disable(card);  			if (ret) @@ -892,10 +893,11 @@ static int mmc_blk_part_switch_pre(struct mmc_card *card,  static int mmc_blk_part_switch_post(struct mmc_card *card,  				    unsigned int part_type)  { -	const unsigned int mask = EXT_CSD_PART_CONFIG_ACC_RPMB; +	const unsigned int mask = EXT_CSD_PART_CONFIG_ACC_MASK; +	const unsigned int rpmb = EXT_CSD_PART_CONFIG_ACC_RPMB;  	int ret = 0; -	if ((part_type & mask) == mask) { +	if ((part_type & mask) == rpmb) {  		mmc_retune_unpause(card->host);  		if (card->reenable_cmdq && !card->ext_csd.cmdq_en)  			ret = mmc_cmdq_enable(card); @@ -2467,7 +2469,7 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,  	bool cache_enabled = false;  	bool fua_enabled = false; -	devidx = ida_simple_get(&mmc_blk_ida, 0, max_devices, GFP_KERNEL); +	devidx = ida_alloc_max(&mmc_blk_ida, max_devices - 1, GFP_KERNEL);  	if (devidx < 0) {  		/*  		 * We get -ENOSPC because there are no more any available @@ -2577,7 +2579,7 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,   err_kfree:  	kfree(md);   out: -	ida_simple_remove(&mmc_blk_ida, devidx); +	ida_free(&mmc_blk_ida, devidx);  	return ERR_PTR(ret);  } @@ -2703,7 +2705,7 @@ static void mmc_blk_rpmb_device_release(struct device *dev)  {  	struct mmc_rpmb_data *rpmb = dev_get_drvdata(dev); -	ida_simple_remove(&mmc_rpmb_ida, rpmb->id); +	ida_free(&mmc_rpmb_ida, rpmb->id);  	kfree(rpmb);  } @@ -2719,13 +2721,13 @@ static int mmc_blk_alloc_rpmb_part(struct mmc_card *card,  	struct mmc_rpmb_data *rpmb;  	/* This creates the minor number for the RPMB char device */ -	devidx = ida_simple_get(&mmc_rpmb_ida, 0, max_devices, GFP_KERNEL); +	devidx = ida_alloc_max(&mmc_rpmb_ida, max_devices - 1, GFP_KERNEL);  	if (devidx < 0)  		return devidx;  	rpmb = kzalloc(sizeof(*rpmb), GFP_KERNEL);  	if (!rpmb) { -		ida_simple_remove(&mmc_rpmb_ida, devidx); +		ida_free(&mmc_rpmb_ida, devidx);  		return -ENOMEM;  	} |