Skip to contentSkip to conversation

staging: sm750fb: Switch to using managed resources

PATCH New Amitoj Kaur Chawla 1 participant 3 messages Feb 28, 2016

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

cover staging: sm750fb: Switch to using managed resources

This patchset uses devres API to switch to managed resources in the sm750fb driver.

Convert the driver to use devm_kzalloc and pcim_enable_device instead of kzalloc and pci_enable_device respectively.

Amitoj Kaur Chawla (2):
staging: sm750fb: Replace kzalloc with devm_kzalloc
staging: sm750fb: Use pcim_enable_device()

 drivers/staging/sm750fb/sm750.c | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)
Signature · 1 line
1.9.1
#1 lore raw

PATCH 1/2 staging: sm750fb: Replace kzalloc with devm_kzalloc

Devm_ functions allocate memory that is released when a driver detaches.
Replace kzalloc with devm_kzalloc and remove corresponding kfrees from probe and remove functions of a pci_dev.

Also, an unnecessary label has been removed by replacing it with a direct return statement.

---
 drivers/staging/sm750fb/sm750.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)
drivers/staging/sm750fb/sm750.c +2 -5
index de996a6..7967a85 100644
@@ -1058,7 +1058,7 @@ static int lynxfb_pci_probe(struct pci_dev *pdev,
 		return err;
 
 	err = -ENOMEM;
-	sm750_dev = kzalloc(sizeof(*sm750_dev), GFP_KERNEL);
+	sm750_dev = devm_kzalloc(&pdev->dev, sizeof(*sm750_dev), GFP_KERNEL);
 	if (!sm750_dev)
 		goto disable_pci;
 
@@ -1090,7 +1090,7 @@ static int lynxfb_pci_probe(struct pci_dev *pdev,
 	/* call chip specific mmap routine */
 	err = hw_sm750_map(sm750_dev, pdev);
 	if (err)
-		goto free_sm750_dev;
+		return err;
 
 	if (!sm750_dev->mtrr_off)
 		sm750_dev->mtrr.vram = arch_phys_wc_add(sm750_dev->vidmem_start,
@@ -1115,8 +1115,6 @@ static int lynxfb_pci_probe(struct pci_dev *pdev,
 
 release_fb:
 	sm750fb_frambuffer_release(sm750_dev);
-free_sm750_dev:
-	kfree(sm750_dev);
 disable_pci:
 	pci_disable_device(pdev);
 	return err;
@@ -1134,7 +1132,6 @@ static void lynxfb_pci_remove(struct pci_dev *pdev)
 	iounmap(sm750_dev->pvReg);
 	iounmap(sm750_dev->pvMem);
 	kfree(g_settings);
-	kfree(sm750_dev);
 }
 
 static int __init lynxfb_setup(char *options)
Signature · 1 line
1.9.1
#2 lore raw

PATCH 2/2 staging: sm750fb: Use pcim_enable_device()

In reply to Amitoj Kaur Chawla

Devm_ functions allocate memory that is released when a driver detaches.
Replace pci_enable_device with the managed pcim_enable_device and remove corresponding pci_disable_device from probe and suspend functions of a pci_dev.

Also, an unnecessary label has been removed by replacing it with a direct return statement.

---
 drivers/staging/sm750fb/sm750.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)
drivers/staging/sm750fb/sm750.c +2 -5
index 7967a85..fde79ee 100644
@@ -422,7 +422,6 @@ static int lynxfb_suspend(struct pci_dev *pdev, pm_message_t mesg)
 			return ret;
 		}
 
-		pci_disable_device(pdev);
 		ret = pci_set_power_state(pdev, pci_choose_state(pdev, mesg));
 		if (ret) {
 			pr_err("error:%d occurred in pci_set_power_state\n", ret);
@@ -1053,14 +1052,14 @@ static int lynxfb_pci_probe(struct pci_dev *pdev,
 	int err;
 
 	/* enable device */
-	err = pci_enable_device(pdev);
+	err = pcim_enable_device(pdev);
 	if (err)
 		return err;
 
 	err = -ENOMEM;
 	sm750_dev = devm_kzalloc(&pdev->dev, sizeof(*sm750_dev), GFP_KERNEL);
 	if (!sm750_dev)
-		goto disable_pci;
+		return err;
 
 	sm750_dev->fbinfo[0] = sm750_dev->fbinfo[1] = NULL;
 	sm750_dev->devid = pdev->device;
@@ -1115,8 +1114,6 @@ static int lynxfb_pci_probe(struct pci_dev *pdev,
 
 release_fb:
 	sm750fb_frambuffer_release(sm750_dev);
-disable_pci:
-	pci_disable_device(pdev);
 	return err;
 }
 
Signature · 1 line
1.9.1