Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1185927yba; Thu, 9 May 2019 12:10:32 -0700 (PDT) X-Google-Smtp-Source: APXvYqwnlQiI3Ylf4rXsbG2Ty2iTGC2xft3BX+WPReeA+pfEYrGAoXOBjQAy/X7zDKou6xALhNon X-Received: by 2002:aa7:90ca:: with SMTP id k10mr7763091pfk.20.1557429032614; Thu, 09 May 2019 12:10:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557429032; cv=none; d=google.com; s=arc-20160816; b=QC6qL9ftuuJ57Tc1Vmfuww9WZV1jD8QHQozsf+q6Q5Ov80waG2McRtj0Xb5szuni8W 5sMkuXnTMJRPPwlcEUA4z1s1ckvUrrbcK5TmyoNRgm8S3mBs3Fp2F6w3Y+QUuYHEjkLf rZZTUb0Ne8KFiJgtyAW9/jm1yHDNIznFzLmQsn+7prNKphHu3M9V4QQJyqKqz+2pyxSl fulmvvdSityJktPUhb0heWmQ7wJp6WGUUmpwpg0uNB2qFNKHQ2N/t8MrGZFaWeoi3j5q 9AkHKVKxJIKheIKCqIctcIyLKiGoCSw4MG/CcDc2Ev3lOsGNwD50B5cazG758I0/2tKN cbCA== 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=wiLP3ZYhsbzMJW50QtrBveU5QQFAGBvWX9igQ1m4MYw=; b=qwE+QYJ4YF8+CaVd/Prp9TKog0wVtoihNNAVM9DPLJKpw0b9n1RNXGuJB81Ad1xURH ZJlSqN5IWoHGrRZ0M64e352JW0ocKoBWfpgw5eEXo3n8pubhJ9vluW6tgBlmB2v4cwHu N8bwjvqgh+19MgnMX81VpT/oTxyzPoj3Rq2zA9vGx8hMNLZORm/9zqh8GUUT5RsHvq5Y 7myFTPw3vVEV5K0/3tXMJMn/AF9t2cKP4hM0N62BCclepJlAXa7ySaxVQuJWR2Jj7gd2 qo3ZWXcbva8cvcs32a8GNzzqtfrJBRkkfZdw7KAL2MuVtfM8JAiJ7xdvOtiBXJ7/Bkz9 ZA5w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=gvnEnCPj; 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 w14si3996065ply.226.2019.05.09.12.10.16; Thu, 09 May 2019 12:10:32 -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=gvnEnCPj; 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 S1727346AbfEITJX (ORCPT + 99 others); Thu, 9 May 2019 15:09:23 -0400 Received: from mail.kernel.org ([198.145.29.99]:35682 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726690AbfEISoV (ORCPT ); Thu, 9 May 2019 14:44:21 -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 0057A2183E; Thu, 9 May 2019 18:44:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1557427460; bh=5iPk4+ih3XUJVCw+XissPYCGciJ7xc3mxsPBpRoFYPU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gvnEnCPj+rH3rfePdjBFVm+KvsVO/kOdAwi0eXPVmtfnLG3La40d+kYjNI7tq3X6i kYlCAB2DNyZzDmMnV3O3FFR0dVfkJ7S1sMNtXgjykb2Ac8zqm7rYyMkQroneZMBFA2 poplXfkW3YcDRYMpwAt24Sl0j+ofDTGTtxZc9RbU= 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 4.9 19/28] genirq: Prevent use-after-free and work list corruption Date: Thu, 9 May 2019 20:42:11 +0200 Message-Id: <20190509181254.290923000@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190509181247.647767531@linuxfoundation.org> References: <20190509181247.647767531@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 cf94460504bba..be7f489788e27 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -332,8 +332,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