Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp989886yba; Thu, 4 Apr 2019 01:53:31 -0700 (PDT) X-Google-Smtp-Source: APXvYqyVpnhh77cacVW7+gZZ73HjK5egOJdzBnNfI0rieI2bx11y3E9f3wjfOwzUx8YX3z5u+GeN X-Received: by 2002:a62:8c:: with SMTP id 134mr4530047pfa.27.1554368010921; Thu, 04 Apr 2019 01:53:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554368010; cv=none; d=google.com; s=arc-20160816; b=worjYvJ+KEnleqhfgDSOe8oAGjuQTEiJk4cGqwAZ3IJxw8GcaQ0E8ccneSs2YciN3K K5febwh2XVVq+KjS8zhuAO/pulOS1MLVzDAHGmznRl/XRpoIbVEwJnHEBYt4tguIJWU/ WliUV0SfJ/GjVpjBwCh00FnUDDyK1eMPC/wcH/yX8BT23Nr7FobLBBAasIJjyBNQlYJV XFo8Upb1OdEnHdeKzSS4vlk278Lbm5XsvV5WThu+dchyLceTu77SnFYcc7Z5uuPhGJqF YUvZq2LcllAhupSe0OQMKpIln4bW1ISXqh/9HF96oSjWuPFRtdlqcCN45E88JutNDZ6a X+zQ== 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=D8p8NvYSu16aocYFpsixXyAQNTOJ8nf0bz214Mv2opA=; b=0K+R9nsRmraWBb8tBS7983s/cLiYtAixVUHl+uDnnb8jY483+DKqO9s95fiF3wwA1X AwyPOJKdt9JKehRqVdn8w/u/NmIz99qrB6MzVAfD+xjmWCefImPrWlUhFjZHmrFmWnSh b2TgK9Ail/K3QGJfRlwhNkaStMapcmJpfE84mVpb+Q+KlvqEXYtrciHVglhhPnLA60EP sMcPanFTNfRl7sko9z8qehFXO425OFWNTToMlNfHdL5GJDuFVK0gArj79UFCe26ouOvK pZnOhOcuuWWR/EIuDgVt/pRa9TzdIW1YyO0YZEYxk2xvOQGaNqL5E44wlDwL9iLWa4RS FXyw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=W4+COMgm; 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 v77si16043015pfa.219.2019.04.04.01.53.15; Thu, 04 Apr 2019 01:53:30 -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=W4+COMgm; 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 S1729479AbfDDIvv (ORCPT + 99 others); Thu, 4 Apr 2019 04:51:51 -0400 Received: from mail.kernel.org ([198.145.29.99]:53718 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728974AbfDDIvs (ORCPT ); Thu, 4 Apr 2019 04:51:48 -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 94D7E2147C; Thu, 4 Apr 2019 08:51:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1554367908; bh=QE6EnqfCsGen7fVIPghDccgPiuskg8282CKOnH+wUyw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=W4+COMgmar4ATr6/GSw4WAWWq59aZyTLeEQOwNWpSTTFgLiDi2UJJ9d4XVG8rMg0R l0QNibqPsCvz9vuw5DJyyPRoWW9GHRkfEW3eHFPEqbNFxToVK0o5c+LPS0LX/iBFsC xydzJdlM9yYsEpG8tQS57idRbuau9aHMn0hGymw0= 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 4.9 50/91] HID: intel-ish-hid: avoid binding wrong ishtp_cl_device Date: Thu, 4 Apr 2019 10:47:34 +0200 Message-Id: <20190404084538.375577016@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190404084535.450029272@linuxfoundation.org> References: <20190404084535.450029272@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.9-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 256521509d20..0de18c76f8d4 100644 --- a/drivers/hid/intel-ish-hid/ishtp/bus.c +++ b/drivers/hid/intel-ish-hid/ishtp/bus.c @@ -628,7 +628,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; @@ -688,6 +689,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