Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1169740yba; Thu, 9 May 2019 11:55:04 -0700 (PDT) X-Google-Smtp-Source: APXvYqzwy7W1Vje6lyR2UH+HtSEr/JokaeCtgqGXhNuWUuIB7CiKN4BrCVCHnllB/kYM37VU9PRb X-Received: by 2002:a17:902:102a:: with SMTP id b39mr7430734pla.188.1557428104106; Thu, 09 May 2019 11:55:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557428104; cv=none; d=google.com; s=arc-20160816; b=XQ1uKS+P1ke2ies00cRVmC6sFwA7IGCSlwmZm/rqL2sgNg/XDkfRbgx1qCUBDvI+/i +T3wOX4y7KmEGpqNUdUyLflxfmBps/Vijq5vYpgwNOIC56PYS9hUDmMESB/yD3ZATFFj PwOTDB9ZJxALZEHhICjfvDyx5D93EU9BJV7qDgXtAnbebdjyZMG8SrUUYamTn7FxpaUt /KE5/t1alXEBQkWGpvo2C0i8jrM7VKR8C5OOIKN5BVWW1Z+4lHKxLzTAAUm7s80zTAU7 EAZwn6Fe1MmBHTj10dCISzBfHmIINljkioFDIg+uGo4iPh8E38dP9lNSaIoFU7yup1gx m2cw== 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=vTRdRpbNIUL9aN60sQfm2eNJZsBs7LlmgyTmdEvrBIU=; b=gzD3jHgUyhwGGrlpA7qics9jqROdEYSSkfaWw7IS9q18Ipld/zjyszPzPmyHRSTt6c 7s7hOLAltbsiEzO2+NqpT39vdElz54x4ekmryHhXCCaA8fJ4V60oBoQ8q3cep4+slbaT AM6IUDgEL21mIvMzyOtaJksGg44Tx5gnLpbiPfNqtUxJYPxlu1nD6Faf8MvUJ/yTdi1Q ZFmRbeVy4VEdFkjYhCOHxnjD1Lmvcq5Z6St/Nyd72MvSleGH28bIeGes8eF7nWWox2dh aN+tLPjbjyvFMDETMq94ZGwRgQIiET7Y+NnLKGtcX4lAbpOf5z/XvZXMkT+CfbBXEtPL 7DFw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=dFpHWc0Y; 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 w12si4070997pld.438.2019.05.09.11.54.48; Thu, 09 May 2019 11:55:04 -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=dFpHWc0Y; 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 S1728975AbfEISx7 (ORCPT + 99 others); Thu, 9 May 2019 14:53:59 -0400 Received: from mail.kernel.org ([198.145.29.99]:48554 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728746AbfEISx6 (ORCPT ); Thu, 9 May 2019 14:53:58 -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 E3597217D6; Thu, 9 May 2019 18:53:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1557428037; bh=7t0QL+p2HleZpA6aEqBZLYEj57sH7+evSfFq7NUp3Mk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dFpHWc0YM2eQ2fYR0cE2Ei5LZ65/j+WRuURWqUiAffCYd9mwFJi4Djlrmqaqxkq6i UA705GW5lRJOR9E+FaDFn43kIlgCGK3XqlspOKgaQ82Bvo/K+9td6tuEDCg3cc52h1 Aikuyyw7BGcwM7kjYdZgDlpzwfe2n9QWleAjc6ug= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Prasad Sodagudi , Thomas Gleixner , marc.zyngier@arm.com, Sasha Levin Subject: [PATCH 5.0 73/95] genirq: Prevent use-after-free and work list corruption Date: Thu, 9 May 2019 20:42:30 +0200 Message-Id: <20190509181314.515316121@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190509181309.180685671@linuxfoundation.org> References: <20190509181309.180685671@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 [ Upstream commit 59c39840f5abf4a71e1810a8da71aaccd6c17d26 ] When irq_set_affinity_notifier() replaces the notifier, then the reference count on the old notifier is dropped which causes it to be freed. But nothing ensures that the old notifier is not longer queued in the work list. If it is queued this results in a use after free and possibly in work list corruption. Ensure that the work is canceled before the reference is dropped. Signed-off-by: Prasad Sodagudi Signed-off-by: Thomas Gleixner Cc: marc.zyngier@arm.com Link: https://lkml.kernel.org/r/1553439424-6529-1-git-send-email-psodagud@codeaurora.org Signed-off-by: Sasha Levin --- kernel/irq/manage.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 84b54a17b95d3..df557ec20a6f9 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -356,8 +356,10 @@ irq_set_affinity_notifier(unsigned int irq, struct irq_affinity_notify *notify) desc->affinity_notify = notify; raw_spin_unlock_irqrestore(&desc->lock, flags); - if (old_notify) + if (old_notify) { + cancel_work_sync(&old_notify->work); kref_put(&old_notify->kref, old_notify->release); + } return 0; } -- 2.20.1