IMHO kfree() here looks very confusing. xpad_led->name is an array of char inside struct xpad_led and is not a dynamic memory itself. But kfree() works well because it is a first member of the struct so it points start address of the struct and frees the struct. Change it to xpad_led for the correctness & readability and make xpad->led NULL for the safety. Signed-off-by: Namhyung Kim <namhyung@xxxxxxxxx> Cc: Jan Kratochvil <honza@xxxxxxxx> --- drivers/input/joystick/xpad.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c index f885902..1ca49e8 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c @@ -728,7 +728,8 @@ static void xpad_led_disconnect(struct usb_xpad *xpad) if (xpad_led) { led_classdev_unregister(&xpad_led->led_cdev); - kfree(xpad_led->name); + kfree(xpad_led); + xpad->led = NULL; } } #else -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html