diff options
Diffstat (limited to 'drivers/mtd/devices/docg3.c')
| -rw-r--r-- | drivers/mtd/devices/docg3.c | 26 | 
1 files changed, 9 insertions, 17 deletions
diff --git a/drivers/mtd/devices/docg3.c b/drivers/mtd/devices/docg3.c index 3e1b0a0ef4d..91a169c44b3 100644 --- a/drivers/mtd/devices/docg3.c +++ b/drivers/mtd/devices/docg3.c @@ -1608,8 +1608,8 @@ static ssize_t dps1_insert_key(struct device *dev,  #define FLOOR_SYSFS(id) { \  	__ATTR(f##id##_dps0_is_keylocked, S_IRUGO, dps0_is_key_locked, NULL), \  	__ATTR(f##id##_dps1_is_keylocked, S_IRUGO, dps1_is_key_locked, NULL), \ -	__ATTR(f##id##_dps0_protection_key, S_IWUGO, NULL, dps0_insert_key), \ -	__ATTR(f##id##_dps1_protection_key, S_IWUGO, NULL, dps1_insert_key), \ +	__ATTR(f##id##_dps0_protection_key, S_IWUSR|S_IWGRP, NULL, dps0_insert_key), \ +	__ATTR(f##id##_dps1_protection_key, S_IWUSR|S_IWGRP, NULL, dps1_insert_key), \  }  static struct device_attribute doc_sys_attrs[DOC_MAX_NBFLOORS][4] = { @@ -2047,21 +2047,21 @@ static int __init docg3_probe(struct platform_device *pdev)  	ress = platform_get_resource(pdev, IORESOURCE_MEM, 0);  	if (!ress) {  		dev_err(dev, "No I/O memory resource defined\n"); -		goto noress; +		return ret;  	} -	base = ioremap(ress->start, DOC_IOSPACE_SIZE); +	base = devm_ioremap(dev, ress->start, DOC_IOSPACE_SIZE);  	ret = -ENOMEM; -	cascade = kzalloc(sizeof(*cascade) * DOC_MAX_NBFLOORS, -			  GFP_KERNEL); +	cascade = devm_kzalloc(dev, sizeof(*cascade) * DOC_MAX_NBFLOORS, +			       GFP_KERNEL);  	if (!cascade) -		goto nomem1; +		return ret;  	cascade->base = base;  	mutex_init(&cascade->lock);  	cascade->bch = init_bch(DOC_ECC_BCH_M, DOC_ECC_BCH_T,  			     DOC_ECC_BCH_PRIMPOLY);  	if (!cascade->bch) -		goto nomem2; +		return ret;  	for (floor = 0; floor < DOC_MAX_NBFLOORS; floor++) {  		mtd = doc_probe_device(cascade, floor, dev); @@ -2097,15 +2097,10 @@ notfound:  	ret = -ENODEV;  	dev_info(dev, "No supported DiskOnChip found\n");  err_probe: -	kfree(cascade->bch); +	free_bch(cascade->bch);  	for (floor = 0; floor < DOC_MAX_NBFLOORS; floor++)  		if (cascade->floors[floor])  			doc_release_device(cascade->floors[floor]); -nomem2: -	kfree(cascade); -nomem1: -	iounmap(base); -noress:  	return ret;  } @@ -2119,7 +2114,6 @@ static int __exit docg3_release(struct platform_device *pdev)  {  	struct docg3_cascade *cascade = platform_get_drvdata(pdev);  	struct docg3 *docg3 = cascade->floors[0]->priv; -	void __iomem *base = cascade->base;  	int floor;  	doc_unregister_sysfs(pdev, cascade); @@ -2129,8 +2123,6 @@ static int __exit docg3_release(struct platform_device *pdev)  			doc_release_device(cascade->floors[floor]);  	free_bch(docg3->cascade->bch); -	kfree(cascade); -	iounmap(base);  	return 0;  }  | 
