Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1015436yba; Thu, 4 Apr 2019 02:28:48 -0700 (PDT) X-Google-Smtp-Source: APXvYqwFP3RivKNae+EHpc88VOb8g8s7XupeEMQl1wWJRJREP87NrDr/S+qOItn5kWyM7B8XMxgr X-Received: by 2002:a65:43c3:: with SMTP id n3mr4844769pgp.375.1554370127966; Thu, 04 Apr 2019 02:28:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554370127; cv=none; d=google.com; s=arc-20160816; b=MGO4/Rp6MhUQ3LghhhWrc/EEfWwumACzgKgIhvNUL8FgTF4tSGU3bhiN2KvZxTNV5n nOIGTU8Ib8bctM5yMnB6/xXAkID2yprdYiW5lL1a4KsDOOlj0q3rK4bbiBJEdRmZ7AaA xp9OSWJdxr8VAcpRSynj82rCdTNmwzPTO+0CrCp67uVcwVplPYhcKQB9LnRIuHoLlCzp 3LogDsWWe9byYOv3d5nK+uErfim0x3Cpo/2VKz6LRFI7nP3puNMPZkgfAAdOf69amuXc xsKy9G2l+2jOIceoQBnZisKnxoGA1qC9UQEp3Qk/RDp/I4AK+6GuCOZ3vdMVGi3/n/MU Ih8A== 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=3Bw6f7EkzOEaX1LYmI/BwF2b71jh4XeEiJVdUxzdjjI=; b=uLbx5/JkF1a1x0cE34tDt+kbPPSXK076bFRPOE77KpryOB9LVpSfLGawjTcDb2s3B6 ECIm1lWPMO0r1Q0jv4PP44YD7pU3UaJMkEX6I7/OCOH0yYh7vENZaWlSWJQkeUd+It/9 Ogms7qj9TPppih9iHbwLsEH7mz7mN/T8y/WJkSNEeNlmJZwQjIXb1zMcw8RRsVglAEYl NpLiVU+BWlaCBVkUSkiyBLr/Remzq6OASLTUGzj5dJ0IttZLxnhIr2aqXS6kXPOhx3qd D5QCXONk8WA25IeHmfEs/XcoNTAn4Uci8CFGG/Sigw8w4P4rOQNJSdogGLVPJh6P6ZdR EfOg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=P7iSmbuP; 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 c142si17030201pfb.32.2019.04.04.02.28.32; Thu, 04 Apr 2019 02:28:47 -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=P7iSmbuP; 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 S2387488AbfDDJM7 (ORCPT + 99 others); Thu, 4 Apr 2019 05:12:59 -0400 Received: from mail.kernel.org ([198.145.29.99]:53114 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732968AbfDDJMy (ORCPT ); Thu, 4 Apr 2019 05:12:54 -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 4BD1520820; Thu, 4 Apr 2019 09:12:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1554369173; bh=zibQUQln7n4H2CDIVdOfJm9lbvI0haqw//u/yLBrrpk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=P7iSmbuPA17QvB/veosU3y4UHaacWq2lXB0axtiL9sQYICvRAUH1bixIYAvLQLX44 5dWDpx9bu8bF1hX01wTf/zXsl9EVmUOTL8iXIadT17FiwZ8sHfJJ0uNQwp7/hQLMKa Ct1HHB62MZyoBZcwdbH9AGUTzc9ha6DSTpoP/AWA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Hong Liu , Hongyan Song , Srinivas Pandruvada , Jiri Kosina , Sasha Levin Subject: [PATCH 5.0 124/246] HID: intel-ish-hid: avoid binding wrong ishtp_cl_device Date: Thu, 4 Apr 2019 10:47:04 +0200 Message-Id: <20190404084623.499194842@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190404084619.236418459@linuxfoundation.org> References: <20190404084619.236418459@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 5.0-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit 0d28f49412405d87d3aae83da255070a46e67627 ] When performing a warm reset in ishtp bus driver, the ishtp_cl_device will not be removed, its fw_client still points to the already freed ishtp_device.fw_clients array. Later after driver finishing ishtp client enumeration, this dangling pointer may cause driver to bind the wrong ishtp_cl_device to the new client, causing wrong callback to be called for messages intended for the new client. This helps in development of firmware where frequent switching of firmwares is required without Linux reboot. Signed-off-by: Hong Liu Tested-by: Hongyan Song Acked-by: Srinivas Pandruvada Signed-off-by: Jiri Kosina Signed-off-by: Sasha Levin --- drivers/hid/intel-ish-hid/ishtp/bus.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/hid/intel-ish-hid/ishtp/bus.c b/drivers/hid/intel-ish-hid/ishtp/bus.c index 728dc6d4561a..a271d6d169b1 100644 --- a/drivers/hid/intel-ish-hid/ishtp/bus.c +++ b/drivers/hid/intel-ish-hid/ishtp/bus.c @@ -675,7 +675,8 @@ int ishtp_cl_device_bind(struct ishtp_cl *cl) spin_lock_irqsave(&cl->dev->device_list_lock, flags); list_for_each_entry(cl_device, &cl->dev->device_list, device_link) { - if (cl_device->fw_client->client_id == cl->fw_client_id) { + if (cl_device->fw_client && + cl_device->fw_client->client_id == cl->fw_client_id) { cl->device = cl_device; rv = 0; break; @@ -735,6 +736,7 @@ void ishtp_bus_remove_all_clients(struct ishtp_device *ishtp_dev, spin_lock_irqsave(&ishtp_dev->device_list_lock, flags); list_for_each_entry_safe(cl_device, n, &ishtp_dev->device_list, device_link) { + cl_device->fw_client = NULL; if (warm_reset && cl_device->reference_count) continue; -- 2.19.1