aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHimangi Saraogi <himangi774@gmail.com>2014-08-02 18:11:35 -0400
committerJiri Kosina <jkosina@suse.cz>2014-08-12 10:27:22 -0400
commit5be5db24fc0883d9e38df378c1de9a00f8933999 (patch)
tree9d73748ec2f32c80f9caa0b1e2ec9371dfe50bff
parent6498d02306b337393b0bc92164857f3e6949c4e8 (diff)
HID: hid-sensor-hub: use devm_ functions consistently
Use devm_kzalloc for all calls to kzalloc and not just the first. Use devm functions for other allocations as well. The calls to free the allocated memory in the probe and remove functions are done away with and a label is removed in the probe function. The semantic match that finds the inconsistency is as follows: // <smpl> @@ @@ *devm_kzalloc(...) ... *kzalloc(...) // </smpl> Signed-off-by: Himangi Saraogi <himangi774@gmail.com> Acked-by: Julia Lawall <julia.lawall@lip6.fr> Reviewed-by: Srinivas Pandruvada <srinivas.pandruvada@intel.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
-rw-r--r--drivers/hid/hid-sensor-hub.c33
1 files changed, 11 insertions, 22 deletions
diff --git a/drivers/hid/hid-sensor-hub.c b/drivers/hid/hid-sensor-hub.c
index e244e449cbba..2ac25760a9a9 100644
--- a/drivers/hid/hid-sensor-hub.c
+++ b/drivers/hid/hid-sensor-hub.c
@@ -604,9 +604,9 @@ static int sensor_hub_probe(struct hid_device *hdev,
604 ret = -EINVAL; 604 ret = -EINVAL;
605 goto err_stop_hw; 605 goto err_stop_hw;
606 } 606 }
607 sd->hid_sensor_hub_client_devs = kzalloc(dev_cnt * 607 sd->hid_sensor_hub_client_devs = devm_kzalloc(&hdev->dev, dev_cnt *
608 sizeof(struct mfd_cell), 608 sizeof(struct mfd_cell),
609 GFP_KERNEL); 609 GFP_KERNEL);
610 if (sd->hid_sensor_hub_client_devs == NULL) { 610 if (sd->hid_sensor_hub_client_devs == NULL) {
611 hid_err(hdev, "Failed to allocate memory for mfd cells\n"); 611 hid_err(hdev, "Failed to allocate memory for mfd cells\n");
612 ret = -ENOMEM; 612 ret = -ENOMEM;
@@ -618,11 +618,12 @@ static int sensor_hub_probe(struct hid_device *hdev,
618 618
619 if (collection->type == HID_COLLECTION_PHYSICAL) { 619 if (collection->type == HID_COLLECTION_PHYSICAL) {
620 620
621 hsdev = kzalloc(sizeof(*hsdev), GFP_KERNEL); 621 hsdev = devm_kzalloc(&hdev->dev, sizeof(*hsdev),
622 GFP_KERNEL);
622 if (!hsdev) { 623 if (!hsdev) {
623 hid_err(hdev, "cannot allocate hid_sensor_hub_device\n"); 624 hid_err(hdev, "cannot allocate hid_sensor_hub_device\n");
624 ret = -ENOMEM; 625 ret = -ENOMEM;
625 goto err_no_mem; 626 goto err_stop_hw;
626 } 627 }
627 hsdev->hdev = hdev; 628 hsdev->hdev = hdev;
628 hsdev->vendor_id = hdev->vendor; 629 hsdev->vendor_id = hdev->vendor;
@@ -631,13 +632,13 @@ static int sensor_hub_probe(struct hid_device *hdev,
631 if (last_hsdev) 632 if (last_hsdev)
632 last_hsdev->end_collection_index = i; 633 last_hsdev->end_collection_index = i;
633 last_hsdev = hsdev; 634 last_hsdev = hsdev;
634 name = kasprintf(GFP_KERNEL, "HID-SENSOR-%x", 635 name = devm_kasprintf(&hdev->dev, GFP_KERNEL,
635 collection->usage); 636 "HID-SENSOR-%x",
637 collection->usage);
636 if (name == NULL) { 638 if (name == NULL) {
637 hid_err(hdev, "Failed MFD device name\n"); 639 hid_err(hdev, "Failed MFD device name\n");
638 ret = -ENOMEM; 640 ret = -ENOMEM;
639 kfree(hsdev); 641 goto err_stop_hw;
640 goto err_no_mem;
641 } 642 }
642 sd->hid_sensor_hub_client_devs[ 643 sd->hid_sensor_hub_client_devs[
643 sd->hid_sensor_client_cnt].id = 644 sd->hid_sensor_client_cnt].id =
@@ -661,16 +662,10 @@ static int sensor_hub_probe(struct hid_device *hdev,
661 ret = mfd_add_devices(&hdev->dev, 0, sd->hid_sensor_hub_client_devs, 662 ret = mfd_add_devices(&hdev->dev, 0, sd->hid_sensor_hub_client_devs,
662 sd->hid_sensor_client_cnt, NULL, 0, NULL); 663 sd->hid_sensor_client_cnt, NULL, 0, NULL);
663 if (ret < 0) 664 if (ret < 0)
664 goto err_no_mem; 665 goto err_stop_hw;
665 666
666 return ret; 667 return ret;
667 668
668err_no_mem:
669 for (i = 0; i < sd->hid_sensor_client_cnt; ++i) {
670 kfree(sd->hid_sensor_hub_client_devs[i].name);
671 kfree(sd->hid_sensor_hub_client_devs[i].platform_data);
672 }
673 kfree(sd->hid_sensor_hub_client_devs);
674err_stop_hw: 669err_stop_hw:
675 hid_hw_stop(hdev); 670 hid_hw_stop(hdev);
676 671
@@ -681,7 +676,6 @@ static void sensor_hub_remove(struct hid_device *hdev)
681{ 676{
682 struct sensor_hub_data *data = hid_get_drvdata(hdev); 677 struct sensor_hub_data *data = hid_get_drvdata(hdev);
683 unsigned long flags; 678 unsigned long flags;
684 int i;
685 679
686 hid_dbg(hdev, " hardware removed\n"); 680 hid_dbg(hdev, " hardware removed\n");
687 hid_hw_close(hdev); 681 hid_hw_close(hdev);
@@ -691,11 +685,6 @@ static void sensor_hub_remove(struct hid_device *hdev)
691 complete(&data->pending.ready); 685 complete(&data->pending.ready);
692 spin_unlock_irqrestore(&data->lock, flags); 686 spin_unlock_irqrestore(&data->lock, flags);
693 mfd_remove_devices(&hdev->dev); 687 mfd_remove_devices(&hdev->dev);
694 for (i = 0; i < data->hid_sensor_client_cnt; ++i) {
695 kfree(data->hid_sensor_hub_client_devs[i].name);
696 kfree(data->hid_sensor_hub_client_devs[i].platform_data);
697 }
698 kfree(data->hid_sensor_hub_client_devs);
699 hid_set_drvdata(hdev, NULL); 688 hid_set_drvdata(hdev, NULL);
700 mutex_destroy(&data->mutex); 689 mutex_destroy(&data->mutex);
701} 690}