diff --git a/drivers/input/touchscreen/sur40.c b/drivers/input/touchscreen/sur40.c index fe63d53d56db..8eec230ccd76 100644 --- a/drivers/input/touchscreen/sur40.c +++ b/drivers/input/touchscreen/sur40.c @@ -730,6 +730,8 @@ static int sur40_probe(struct usb_interface *interface, if (error) { dev_err(&interface->dev, "Unable to register polled input device."); + input_free_device(input); + input = NULL; goto err_free_buffer; } @@ -811,7 +813,8 @@ static int sur40_probe(struct usb_interface *interface, err_free_buffer: kfree(sur40->bulk_in_buffer); err_free_input: - input_free_device(input); + if (input) + input_unregister_device(input); err_free_dev: kfree(sur40);