From patchwork Mon Sep 17 08:53:54 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: axel lin X-Patchwork-Id: 1466201 X-Patchwork-Delegate: jikos@jikos.cz Return-Path: X-Original-To: patchwork-linux-input@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id AFB87DFFFF for ; Mon, 17 Sep 2012 08:54:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753386Ab2IQIyA (ORCPT ); Mon, 17 Sep 2012 04:54:00 -0400 Received: from mail-oa0-f46.google.com ([209.85.219.46]:39213 "EHLO mail-oa0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750782Ab2IQIx7 (ORCPT ); Mon, 17 Sep 2012 04:53:59 -0400 Received: by oago6 with SMTP id o6so4491026oag.19 for ; Mon, 17 Sep 2012 01:53:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:subject:from:to:cc:date:content-type:x-mailer :content-transfer-encoding:mime-version; bh=wf9Au8pvDjnTTHPfXWwID21aekdEN4jTApQGuT+wy84=; b=QaK79N8Rk1aBjpuwLmd55LyOuWD1DUsNfzqZap81MvJ1OmFs7rD+JO6aJe1C+eFXq9 JIWyUIEjng+5hJS4HnxtrKlrXztJdxxcG7b7cfOXm2vecRQZaMS1u3i/lbksr21Kfamn U1izOnXtzyS4mm4OyIkXufCg+Sjt4/S7fGZMz81n80WxHCY2OBj9Xrg15b58M8O4tS6d hzXvyYlmz4GSbQ50FX+fJJcuX/JYQNw+HA1KJRyO8A8G3bZFvauRxDCbFGclnJJXuGzJ pVOTpNlj3/wiK3WPMdBXrGi0ekWSeUdTF9YgGRgyR8Fv7KYxmB5zeJokVyq2xrapY7GD v3mQ== Received: by 10.60.19.67 with SMTP id c3mr10920999oee.106.1347872038881; Mon, 17 Sep 2012 01:53:58 -0700 (PDT) Received: from [114.39.105.241] (114-39-105-241.dynamic.hinet.net. [114.39.105.241]) by mx.google.com with ESMTPS id k3sm10148028obw.4.2012.09.17.01.53.56 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 17 Sep 2012 01:53:58 -0700 (PDT) Message-ID: <1347872034.7737.4.camel@phoenix> Subject: [PATCH v2] HID: wacom: Fix wacom_probe error handling From: Axel Lin To: Jiri Kosina Cc: Przemo Firszt , Ping Cheng , linux-input@vger.kernel.org Date: Mon, 17 Sep 2012 16:53:54 +0800 X-Mailer: Evolution 3.2.3-0ubuntu6 Mime-Version: 1.0 Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org OLEDs/LED are not critical for tablet functioning thus ignore OLED/LED initialisation failures. This patch does clean up all the sysfs attribute files in error paths. Signed-off-by: Axel Lin Tested-by: Przemo Firszt --- drivers/hid/hid-wacom.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c index a0fafac..2f60da9 100644 --- a/drivers/hid/hid-wacom.c +++ b/drivers/hid/hid-wacom.c @@ -858,11 +858,9 @@ OLED_INIT(7); if (hdev->product == USB_DEVICE_ID_WACOM_INTUOS4_BLUETOOTH) { sprintf(hdev->name, "%s", "Wacom Intuos4 WL"); ret = wacom_initialize_leds(hdev); - if (ret) { + if (ret) hid_warn(hdev, "can't create led attribute, err: %d\n", ret); - goto destroy_leds; - } } wdata->battery.properties = wacom_battery_props; @@ -875,8 +873,8 @@ OLED_INIT(7); ret = power_supply_register(&hdev->dev, &wdata->battery); if (ret) { - hid_warn(hdev, "can't create sysfs battery attribute, err: %d\n", - ret); + hid_err(hdev, "can't create sysfs battery attribute, err: %d\n", + ret); goto err_battery; } @@ -891,8 +889,8 @@ OLED_INIT(7); ret = power_supply_register(&hdev->dev, &wdata->ac); if (ret) { - hid_warn(hdev, - "can't create ac battery attribute, err: %d\n", ret); + hid_err(hdev, + "can't create ac battery attribute, err: %d\n", ret); goto err_ac; } @@ -902,10 +900,17 @@ OLED_INIT(7); err_ac: power_supply_unregister(&wdata->battery); err_battery: + wacom_destroy_leds(hdev); + device_remove_file(&hdev->dev, &dev_attr_oled0_img); + device_remove_file(&hdev->dev, &dev_attr_oled1_img); + device_remove_file(&hdev->dev, &dev_attr_oled2_img); + device_remove_file(&hdev->dev, &dev_attr_oled3_img); + device_remove_file(&hdev->dev, &dev_attr_oled4_img); + device_remove_file(&hdev->dev, &dev_attr_oled5_img); + device_remove_file(&hdev->dev, &dev_attr_oled6_img); + device_remove_file(&hdev->dev, &dev_attr_oled7_img); device_remove_file(&hdev->dev, &dev_attr_speed); hid_hw_stop(hdev); -destroy_leds: - wacom_destroy_leds(hdev); err_free: kfree(wdata); return ret;