Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp4558368imu; Tue, 29 Jan 2019 03:46:52 -0800 (PST) X-Google-Smtp-Source: ALg8bN7FufCoohOKqZDIPi6J4ys3+PjREbbrP+Y2X/4+y1Lc8+r2DGX2ZmudMGRJZPDLZwRFy2Vo X-Received: by 2002:a63:587:: with SMTP id 129mr23114685pgf.273.1548762412680; Tue, 29 Jan 2019 03:46:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548762412; cv=none; d=google.com; s=arc-20160816; b=gRN211YMyatG1cySiuMKFEgB2zr9I09CWcwbcebDKKHkUlfLlQNMsvvG97opKjfCs4 /4jwq2WrIwzBBMXnzdLYGgw8UG2gKn8vu+TvzhS8S+wAzs0UNNEox01RAS4VCWybOx9l LIPmUXQiX7WUr55kTKKFXqS+uozzP+R9JqwRuCmOgpn48XaBFVs54o2E/zuq8kywH4YT io6olSxROS9iS/QfwX5qIx83wnr5fE4Dtg/QWia8qeS8q4LLtzz7pgpTFVmxIB1fvef2 BC0tXGPRBPrJoKv/JUbwjojos87iCw1XmkG0yVb9Cu1n9ykMEfhTzcmjOzwX9YN+ic11 3AJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Qx11gxf5l9TRAbfYt44d5ulGzwoobzlq401gcB53Xug=; b=G2OecqtdV+U4zVWfg4PBMT1Q9trugcUREqwqIEewxkAsESkO2/bRnAg5/gCs3IAr9M qCna3K24PWjk7IEGSjJ9BEIWQtYAVpQz0Z857rzAl8YOapdtGVrWjfgNMkYqg7K78upH W6X5rnYwZIKzHjICKLuH1OdZ510AG1p5sK6JddR8Au7KgUQO+reuJklJ0x4GMlT4g+cf 0Z3bBw6DIICmO2t1aQJypMePig/X987UzfH3F1NZqNxOouPVZf6xJCw7bX3Kaeu/5cTk CdcdYhePcIYQ/5qGCwSfXaZjN+5+MYvf2DD7hi7hy30ibYBBA1DR8Ugqg+AsHM94CQMT 267g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=A5QTqAqi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f12si216054pgd.68.2019.01.29.03.46.36; Tue, 29 Jan 2019 03:46:52 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=A5QTqAqi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730612AbfA2Lok (ORCPT + 99 others); Tue, 29 Jan 2019 06:44:40 -0500 Received: from mail.kernel.org ([198.145.29.99]:35002 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730603AbfA2Log (ORCPT ); Tue, 29 Jan 2019 06:44:36 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 913F32083B; Tue, 29 Jan 2019 11:44:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1548762276; bh=w3k7zFYXaW8li8/Mb7uHIquxYTI77lkXCWRXTgjrqos=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=A5QTqAqiNlljAOYjqA9TLZuxXLr2ZU7qQgDTWK8dNtMJ2KarEJJzJd4++DZgO5jvA iJIAbW2mqJ6Mt7Jc8pBoIs0gn0u9C079594Np7zIt2AtE6EyPaXPutg0Oecyar3v4V NPyLeQDJ83qKYQPhAnUs1D3himPCRHlkgZODJLzI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Christian Lamparter , Jacek Anaszewski Subject: [PATCH 4.19 024/103] USB: leds: fix regression in usbport led trigger Date: Tue, 29 Jan 2019 12:35:01 +0100 Message-Id: <20190129113201.033832816@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190129113159.567154026@linuxfoundation.org> References: <20190129113159.567154026@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.19-stable review patch. If anyone has any objections, please let me know. ------------------ From: Christian Lamparter commit 91f7d2e89868fcac0e750a28230fdb1ad4512137 upstream. The patch "usb: simplify usbport trigger" together with "leds: triggers: add device attribute support" caused an regression for the usbport trigger. it will no longer enumerate any active usb hub ports under the "ports" directory in the sysfs class directory, if the usb host drivers are fully initialized before the usbport trigger was loaded. The reason is that the usbport driver tries to register the sysfs entries during the activate() callback. And this will fail with -2 / ENOENT because the patch "leds: triggers: add device attribute support" made it so that the sysfs "ports" group was only being added after the activate() callback succeeded. This version of the patch reverts parts of the "usb: simplify usbport trigger" patch and restores usbport trigger's functionality. Fixes: 6f7b0bad8839 ("usb: simplify usbport trigger") Signed-off-by: Christian Lamparter Cc: stable Acked-by: Jacek Anaszewski Signed-off-by: Greg Kroah-Hartman --- drivers/usb/core/ledtrig-usbport.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) --- a/drivers/usb/core/ledtrig-usbport.c +++ b/drivers/usb/core/ledtrig-usbport.c @@ -119,11 +119,6 @@ static const struct attribute_group port .attrs = ports_attrs, }; -static const struct attribute_group *ports_groups[] = { - &ports_group, - NULL -}; - /*************************************** * Adding & removing ports ***************************************/ @@ -307,6 +302,7 @@ static int usbport_trig_notify(struct no static int usbport_trig_activate(struct led_classdev *led_cdev) { struct usbport_trig_data *usbport_data; + int err; usbport_data = kzalloc(sizeof(*usbport_data), GFP_KERNEL); if (!usbport_data) @@ -315,6 +311,9 @@ static int usbport_trig_activate(struct /* List of ports */ INIT_LIST_HEAD(&usbport_data->ports); + err = sysfs_create_group(&led_cdev->dev->kobj, &ports_group); + if (err) + goto err_free; usb_for_each_dev(usbport_data, usbport_trig_add_usb_dev_ports); usbport_trig_update_count(usbport_data); @@ -322,8 +321,11 @@ static int usbport_trig_activate(struct usbport_data->nb.notifier_call = usbport_trig_notify; led_set_trigger_data(led_cdev, usbport_data); usb_register_notify(&usbport_data->nb); - return 0; + +err_free: + kfree(usbport_data); + return err; } static void usbport_trig_deactivate(struct led_classdev *led_cdev) @@ -335,6 +337,8 @@ static void usbport_trig_deactivate(stru usbport_trig_remove_port(usbport_data, port); } + sysfs_remove_group(&led_cdev->dev->kobj, &ports_group); + usb_unregister_notify(&usbport_data->nb); kfree(usbport_data); @@ -344,7 +348,6 @@ static struct led_trigger usbport_led_tr .name = "usbport", .activate = usbport_trig_activate, .deactivate = usbport_trig_deactivate, - .groups = ports_groups, }; static int __init usbport_trig_init(void)