diff options
| -rw-r--r-- | drivers/hid/hid-sony.c | 42 |
1 files changed, 5 insertions, 37 deletions
diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c index ebad1381e177..7c1c56d13122 100644 --- a/drivers/hid/hid-sony.c +++ b/drivers/hid/hid-sony.c | |||
| @@ -1940,25 +1940,6 @@ static int sony_led_blink_set(struct led_classdev *led, unsigned long *delay_on, | |||
| 1940 | return 0; | 1940 | return 0; |
| 1941 | } | 1941 | } |
| 1942 | 1942 | ||
| 1943 | static void sony_leds_remove(struct sony_sc *sc) | ||
| 1944 | { | ||
| 1945 | struct led_classdev *led; | ||
| 1946 | int n; | ||
| 1947 | |||
| 1948 | BUG_ON(!(sc->quirks & SONY_LED_SUPPORT)); | ||
| 1949 | |||
| 1950 | for (n = 0; n < sc->led_count; n++) { | ||
| 1951 | led = sc->leds[n]; | ||
| 1952 | sc->leds[n] = NULL; | ||
| 1953 | if (!led) | ||
| 1954 | continue; | ||
| 1955 | led_classdev_unregister(led); | ||
| 1956 | kfree(led); | ||
| 1957 | } | ||
| 1958 | |||
| 1959 | sc->led_count = 0; | ||
| 1960 | } | ||
| 1961 | |||
| 1962 | static int sony_leds_init(struct sony_sc *sc) | 1943 | static int sony_leds_init(struct sony_sc *sc) |
| 1963 | { | 1944 | { |
| 1964 | struct hid_device *hdev = sc->hdev; | 1945 | struct hid_device *hdev = sc->hdev; |
| @@ -2031,11 +2012,10 @@ static int sony_leds_init(struct sony_sc *sc) | |||
| 2031 | if (use_ds4_names) | 2012 | if (use_ds4_names) |
| 2032 | name_sz = strlen(dev_name(&hdev->dev)) + strlen(ds4_name_str[n]) + 2; | 2013 | name_sz = strlen(dev_name(&hdev->dev)) + strlen(ds4_name_str[n]) + 2; |
| 2033 | 2014 | ||
| 2034 | led = kzalloc(sizeof(struct led_classdev) + name_sz, GFP_KERNEL); | 2015 | led = devm_kzalloc(&hdev->dev, sizeof(struct led_classdev) + name_sz, GFP_KERNEL); |
| 2035 | if (!led) { | 2016 | if (!led) { |
| 2036 | hid_err(hdev, "Couldn't allocate memory for LED %d\n", n); | 2017 | hid_err(hdev, "Couldn't allocate memory for LED %d\n", n); |
| 2037 | ret = -ENOMEM; | 2018 | return -ENOMEM; |
| 2038 | goto error_leds; | ||
| 2039 | } | 2019 | } |
| 2040 | 2020 | ||
| 2041 | name = (void *)(&led[1]); | 2021 | name = (void *)(&led[1]); |
| @@ -2056,21 +2036,14 @@ static int sony_leds_init(struct sony_sc *sc) | |||
| 2056 | 2036 | ||
| 2057 | sc->leds[n] = led; | 2037 | sc->leds[n] = led; |
| 2058 | 2038 | ||
| 2059 | ret = led_classdev_register(&hdev->dev, led); | 2039 | ret = devm_led_classdev_register(&hdev->dev, led); |
| 2060 | if (ret) { | 2040 | if (ret) { |
| 2061 | hid_err(hdev, "Failed to register LED %d\n", n); | 2041 | hid_err(hdev, "Failed to register LED %d\n", n); |
| 2062 | sc->leds[n] = NULL; | 2042 | return ret; |
| 2063 | kfree(led); | ||
| 2064 | goto error_leds; | ||
| 2065 | } | 2043 | } |
| 2066 | } | 2044 | } |
| 2067 | 2045 | ||
| 2068 | return ret; | 2046 | return 0; |
| 2069 | |||
| 2070 | error_leds: | ||
| 2071 | sony_leds_remove(sc); | ||
| 2072 | |||
| 2073 | return ret; | ||
| 2074 | } | 2047 | } |
| 2075 | 2048 | ||
| 2076 | static void sixaxis_send_output_report(struct sony_sc *sc) | 2049 | static void sixaxis_send_output_report(struct sony_sc *sc) |
| @@ -2832,8 +2805,6 @@ err_stop: | |||
| 2832 | device_remove_file(&sc->hdev->dev, &dev_attr_firmware_version); | 2805 | device_remove_file(&sc->hdev->dev, &dev_attr_firmware_version); |
| 2833 | if (sc->hw_version) | 2806 | if (sc->hw_version) |
| 2834 | device_remove_file(&sc->hdev->dev, &dev_attr_hardware_version); | 2807 | device_remove_file(&sc->hdev->dev, &dev_attr_hardware_version); |
| 2835 | if (sc->quirks & SONY_LED_SUPPORT) | ||
| 2836 | sony_leds_remove(sc); | ||
| 2837 | if (sc->quirks & SONY_BATTERY_SUPPORT) | 2808 | if (sc->quirks & SONY_BATTERY_SUPPORT) |
| 2838 | sony_battery_remove(sc); | 2809 | sony_battery_remove(sc); |
| 2839 | sony_cancel_work_sync(sc); | 2810 | sony_cancel_work_sync(sc); |
| @@ -2914,9 +2885,6 @@ static void sony_remove(struct hid_device *hdev) | |||
| 2914 | 2885 | ||
| 2915 | hid_hw_close(hdev); | 2886 | hid_hw_close(hdev); |
| 2916 | 2887 | ||
| 2917 | if (sc->quirks & SONY_LED_SUPPORT) | ||
| 2918 | sony_leds_remove(sc); | ||
| 2919 | |||
| 2920 | if (sc->quirks & SONY_BATTERY_SUPPORT) | 2888 | if (sc->quirks & SONY_BATTERY_SUPPORT) |
| 2921 | sony_battery_remove(sc); | 2889 | sony_battery_remove(sc); |
| 2922 | 2890 | ||
