From: Benjamin Tissoires <benjamin.tissoi...@redhat.com> When we have to deal with new elements in probe, having the exit labels named sequencially is a pain to maintain. Put a meaningful name instead so that we do not have to renumber them on inserts.
Signed-off-by: Benjamin Tissoires <benjamin.tissoi...@redhat.com> Acked-by: Jason Gerecke <killert...@gmail.com> Signed-off-by: Jiri Kosina <jkos...@suse.cz> --- 3.17/wacom_sys.c | 49 +++++++++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/3.17/wacom_sys.c b/3.17/wacom_sys.c index 2508628..97e1fef 100644 --- a/3.17/wacom_sys.c +++ b/3.17/wacom_sys.c @@ -1075,7 +1075,7 @@ static int wacom_register_inputs(struct wacom *wacom) pad_input_dev = wacom_allocate_input(wacom); if (!input_dev || !pad_input_dev) { error = -ENOMEM; - goto fail1; + goto fail_allocate_input; } wacom_wac->input = input_dev; @@ -1084,11 +1084,11 @@ static int wacom_register_inputs(struct wacom *wacom) error = wacom_setup_input_capabilities(input_dev, wacom_wac); if (error) - goto fail2; + goto fail_input_cap; error = input_register_device(input_dev); if (error) - goto fail2; + goto fail_register_input; error = wacom_setup_pad_input_capabilities(pad_input_dev, wacom_wac); if (error) { @@ -1099,25 +1099,26 @@ static int wacom_register_inputs(struct wacom *wacom) } else { error = input_register_device(pad_input_dev); if (error) - goto fail3; + goto fail_register_pad_input; error = wacom_initialize_leds(wacom); if (error) - goto fail4; + goto fail_leds; } return 0; -fail4: +fail_leds: input_unregister_device(pad_input_dev); pad_input_dev = NULL; -fail3: +fail_register_pad_input: input_unregister_device(input_dev); input_dev = NULL; -fail2: +fail_register_input: +fail_input_cap: wacom_wac->input = NULL; wacom_wac->pad_input = NULL; -fail1: +fail_allocate_input: if (input_dev) input_free_device(input_dev); if (pad_input_dev) @@ -1305,7 +1306,7 @@ static int wacom_probe(struct hid_device *hdev, error = hid_parse(hdev); if (error) { hid_err(hdev, "parse failed\n"); - goto fail1; + goto fail_parse; } wacom_wac = &wacom->wacom_wac; @@ -1314,12 +1315,12 @@ static int wacom_probe(struct hid_device *hdev, features->pktlen = wacom_compute_pktlen(hdev); if (features->pktlen > WACOM_PKGLEN_MAX) { error = -EINVAL; - goto fail1; + goto fail_pktlen; } if (features->check_for_hid_type && features->hid_type != hdev->type) { error = -ENODEV; - goto fail1; + goto fail_type; } wacom->usbdev = dev; @@ -1388,20 +1389,20 @@ static int wacom_probe(struct hid_device *hdev, error = wacom_add_shared_data(hdev); if (error) - goto fail1; + goto fail_shared_data; } if (!(features->quirks & WACOM_QUIRK_MONITOR) && (features->quirks & WACOM_QUIRK_BATTERY)) { error = wacom_initialize_battery(wacom); if (error) - goto fail2; + goto fail_battery; } if (!(features->quirks & WACOM_QUIRK_NO_INPUT)) { error = wacom_register_inputs(wacom); if (error) - goto fail3; + goto fail_register_inputs; } if (hdev->bus == BUS_BLUETOOTH) { @@ -1419,7 +1420,7 @@ static int wacom_probe(struct hid_device *hdev, error = hid_hw_start(hdev, HID_CONNECT_HIDRAW); if (error) { hid_err(hdev, "hw start failed\n"); - goto fail4; + goto fail_hw_start; } if (features->quirks & WACOM_QUIRK_MONITOR) @@ -1432,12 +1433,20 @@ static int wacom_probe(struct hid_device *hdev, return 0; - fail4: if (hdev->bus == BUS_BLUETOOTH) +fail_hw_start: + wacom_unregister_inputs(wacom); + if (hdev->bus == BUS_BLUETOOTH) device_remove_file(&hdev->dev, &dev_attr_speed); +fail_register_inputs: wacom_unregister_inputs(wacom); - fail3: wacom_destroy_battery(wacom); - fail2: wacom_remove_shared_data(wacom_wac); - fail1: kfree(wacom); + wacom_destroy_battery(wacom); +fail_battery: + wacom_remove_shared_data(wacom_wac); +fail_shared_data: +fail_type: +fail_pktlen: +fail_parse: + kfree(wacom); hid_set_drvdata(hdev, NULL); return error; } -- 2.1.3 ------------------------------------------------------------------------------ Dive into the World of Parallel Programming! The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel