Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp5226736ybl; Tue, 27 Aug 2019 01:07:45 -0700 (PDT) X-Google-Smtp-Source: APXvYqxLYWq+smADLKN/YeUAWSfZYwFox93wdpCf26xvit8mKS25W+a4ta0Wgw6QPI7VN0F1oU7+ X-Received: by 2002:a17:902:e406:: with SMTP id ci6mr10521345plb.207.1566893265261; Tue, 27 Aug 2019 01:07:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566893265; cv=none; d=google.com; s=arc-20160816; b=lataQqaUWsex2CarExuagbndgqIqztnHujSbjWE2qwb0cicdVrQ0iDiCWIkyq12ZNY JqLVmOrWPy4uHt4WoQravlzFziXo9KDC8hhL6EeWXY0nDQri9ehIAGT9FTnwe9ZzX4E2 VGr8+H4rt5znSgNczEAVUswsnyraDwSsF86iK5eoz3Es+XApKKPNh3j8dQB/+TtFMQ8n 2wbX6OTEhQDv40KfFKR1lRRDjG3Qnx8p5XTsXonnOXBu1aC46Ve+7EJicx1FO6J5KZCk 8N+UzcksD7ECfzAap/T3+JraKPgZLTBxmEDc1PKVbwghPb62jL4gB7FSTnikAO9GoUeo olhw== 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=t8Nk9g+KLgFrWX9Ayuf44/OJJGWuFUuHQmjq45ss0do=; b=FDFMcsrpMnmPWySuuwErC3P0EFl60AH18EYgLItPY5vIqi4vFb4J7ppVJqhDgDDw5q l5FS9mRHytKvtoAOZD7+14TljJnCT/TU9UlydvcKmOmTMQCiZghVd66ej4bgl7nCdmYE tKih5MJH81IX2UQ7NMoM1QnnwHGEsPt4K8JwCBi9PfWXYjaZwii8+JgfbLBeGxfF1kVp AWi3kvSVyUq/o84azE/zkWjww6EAeVODNDog6aLvwQZpN560Q67VFgyKzqEinAVOG5/w wzdniueCh8nTofDXnIEmnIgUw6Oxj9JDLw6//f8jbllicemZScE4gsGbW8MlAJ2YvOSC Fthg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=MGCDW6pv; 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 t9si1904521pjy.47.2019.08.27.01.07.29; Tue, 27 Aug 2019 01:07:45 -0700 (PDT) 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=MGCDW6pv; 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 S1733026AbfH0IGV (ORCPT + 99 others); Tue, 27 Aug 2019 04:06:21 -0400 Received: from mail.kernel.org ([198.145.29.99]:36302 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731768AbfH0IGS (ORCPT ); Tue, 27 Aug 2019 04:06:18 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.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 68CC52173E; Tue, 27 Aug 2019 08:06:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1566893177; bh=YjerzujQHNFzHW6x30LYl9x9aky76kArD48zYRFWU9U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MGCDW6pvOq4oj2mST1BARBxosYa1XHMCuPgXjiwoUuyL/4I/aIgLO6FNtiRFoLjWJ wY/yQ53TcVj/7KWMiKHmasKJ8lqwVRuV+FGFziV3OE/+Qz6f0jzTy4TaBbencxclaW AkJ1ve6yxzyilUDH808fR81maEUKBoGMQZrBWGaw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Michael Kelley , Thomas Gleixner Subject: [PATCH 5.2 145/162] genirq: Properly pair kobject_del() with kobject_add() Date: Tue, 27 Aug 2019 09:51:13 +0200 Message-Id: <20190827072743.753109574@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190827072738.093683223@linuxfoundation.org> References: <20190827072738.093683223@linuxfoundation.org> User-Agent: quilt/0.66 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 From: Michael Kelley commit d0ff14fdc987303aeeb7de6f1bd72c3749ae2a9b upstream. If alloc_descs() fails before irq_sysfs_init() has run, free_desc() in the cleanup path will call kobject_del() even though the kobject has not been added with kobject_add(). Fix this by making the call to kobject_del() conditional on whether irq_sysfs_init() has run. This problem surfaced because commit aa30f47cf666 ("kobject: Add support for default attribute groups to kobj_type") makes kobject_del() stricter about pairing with kobject_add(). If the pairing is incorrrect, a WARNING and backtrace occur in sysfs_remove_group() because there is no parent. [ tglx: Add a comment to the code and make it work with CONFIG_SYSFS=n ] Fixes: ecb3f394c5db ("genirq: Expose interrupt information through sysfs") Signed-off-by: Michael Kelley Signed-off-by: Thomas Gleixner Acked-by: Greg Kroah-Hartman Cc: stable@vger.kernel.org Link: https://lkml.kernel.org/r/1564703564-4116-1-git-send-email-mikelley@microsoft.com Signed-off-by: Greg Kroah-Hartman --- kernel/irq/irqdesc.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) --- a/kernel/irq/irqdesc.c +++ b/kernel/irq/irqdesc.c @@ -295,6 +295,18 @@ static void irq_sysfs_add(int irq, struc } } +static void irq_sysfs_del(struct irq_desc *desc) +{ + /* + * If irq_sysfs_init() has not yet been invoked (early boot), then + * irq_kobj_base is NULL and the descriptor was never added. + * kobject_del() complains about a object with no parent, so make + * it conditional. + */ + if (irq_kobj_base) + kobject_del(&desc->kobj); +} + static int __init irq_sysfs_init(void) { struct irq_desc *desc; @@ -325,6 +337,7 @@ static struct kobj_type irq_kobj_type = }; static void irq_sysfs_add(int irq, struct irq_desc *desc) {} +static void irq_sysfs_del(struct irq_desc *desc) {} #endif /* CONFIG_SYSFS */ @@ -438,7 +451,7 @@ static void free_desc(unsigned int irq) * The sysfs entry must be serialized against a concurrent * irq_sysfs_init() as well. */ - kobject_del(&desc->kobj); + irq_sysfs_del(desc); delete_irq_desc(irq); /*