From nobody Mon Feb 9 00:06:25 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 57A8D18870F; Fri, 22 Nov 2024 07:52:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732261935; cv=none; b=gG23PuoE71VPsrZv21UtgJ/0jQ1qqEL84Idfb7P2XLpnK32Yp1f6YhjxYNN9X1icmKhZnjbAUa1qhUStLc7qqDXV/PQBixtmgKYEE8gRAivdBg+GSXisxGiQMQa0+dWimybbvUXlUScuIArnqNfuS8Kd0db1NtuWzht72ReUB20= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732261935; c=relaxed/simple; bh=zdLs8PVFA8nwTP5e5idqeEFrdGWXZmjB84prpOFpVFg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OsyUkpmnqBqDOAPPRd+5ecAkFoifKo5NoXWUPqqk/B3v8n0487zkmP0H0qtXNIna75PTP/BPQioBOWYlHONqUCw7JpW6aexaHPTfOgiV2pLgUDXRQN46lFox9tdx5oatBBEtIV3GaM+hONsXHqMvuL1VgjRbnMvUg4R5ZcSJP1I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=bawUzc2E; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="bawUzc2E" Received: from [127.0.1.1] (91-157-155-49.elisa-laajakaista.fi [91.157.155.49]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 66FE8D21; Fri, 22 Nov 2024 08:51:51 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1732261912; bh=zdLs8PVFA8nwTP5e5idqeEFrdGWXZmjB84prpOFpVFg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=bawUzc2Ea8Ia+3mxhzmZc2w+i0AgSIBWF/XAlxEUXKOjnrbl13ma12gjOJKLTPB4A HUmccpuAyQMHW3/dPRhvuaQ+aSGp5extbZ3QYFloBQmyHnV1bvLPJWJjiN7bMcLtzX b/btIFlWoQwnDNR9vJ9BOEeGEBVeo3FLopHHu2Zs= From: Tomi Valkeinen Date: Fri, 22 Nov 2024 09:51:38 +0200 Subject: [PATCH 1/3] i2c: atr: Allow unmapped addresses from nested ATRs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241122-i2c-atr-fixes-v1-1-62c51ce790be@ideasonboard.com> References: <20241122-i2c-atr-fixes-v1-0-62c51ce790be@ideasonboard.com> In-Reply-To: <20241122-i2c-atr-fixes-v1-0-62c51ce790be@ideasonboard.com> To: Luca Ceresoli , Wolfram Sang , Andy Shevchenko , Sakari Ailus Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Wolfram Sang , Mauro Carvalho Chehab , Cosmin Tanislav , Tomi Valkeinen , Tomi Valkeinen X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1562; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=HZns0m7VGWUM2poqr19PsiIocfET85IMew+ehC1nFs8=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBnQDgoh7C2DqsJ9DrUeAw8s6qE5GfOFL71POEya yoJPYVTQNCJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ0A4KAAKCRD6PaqMvJYe 9aoZEACoSJLLipHnksJw6fyxHtjhUoPqsnNc6hwf5dOiZu51OIspA920l6OhKXBdIRf8stWiB7t 6oXZZRLJgrnqlqmzEcIoV1sZ64RP9jlIEawoWWFicnWaQF/+Vwy5eL5gFBP7D1U5YU9vxgzh+MP qz797DizY+v589A8kndf8gp28s+juYigEE0UPyxTbCS6LpuTon1qdCc5y9NiH71piIOAe9IEyF6 jMcJw04MtZYXgAsaisyjGiRNw9DxdiOQ0ceDa1WWJ+TxzwW09+kiaeV3Jk/rryAAqEbGTUfsItz GFqTyQaMcZUZDPfYTi2v0sJKAAvP6tWFZ81eO6OVKU6paFJ12305m/t7Di7KEL5Te95FZtM5LUh op/MNYFDTntKC+ecni7hyMttWIgktvOhW9Sbnt4NUzDcE74mUV+RbrhClNUYGYGxrQUlnYO80Cg +VUZ2eLR26Roi1s6MD9hB1SXqBN0+JDiuB5QXJykZrV4x05Ac5uKOOmkqLQGylWLMNBmSj3qGc2 miC02bL7LtZEVnWF8TEaFasUh4sI4rHohNhXdpUGCcr+PLQKHl8GN9AniumLooiF/5lUoUt6knJ Tev7NLymab+/rhCCcMCnpM3PJ+Uln4+ppDmdgEdrqJSOR3gfmeFnIYiJQacz/A054UYwGU8ZDmE RQR3slyTOGeOuVg== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 From: Cosmin Tanislav i2c-atr translates the i2c transactions and forwards them to its parent i2c bus. Any transaction to an i2c address that has not been mapped on the i2c-atr will be rejected with an error. However, if the parent i2c bus is another i2c-atr, the parent i2c-atr gets a transaction to an i2c address that is not mapped in the parent i2c-atr, and thus fails. Relax the checks, and allow non-mapped transactions to fix this issue. Signed-off-by: Cosmin Tanislav Signed-off-by: Tomi Valkeinen --- drivers/i2c/i2c-atr.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index f21475ae5921..ef5adafa9bf4 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -134,7 +134,6 @@ i2c_atr_find_mapping_by_addr(const struct list_head *li= st, u16 phys_addr) static int i2c_atr_map_msgs(struct i2c_atr_chan *chan, struct i2c_msg *msg= s, int num) { - struct i2c_atr *atr =3D chan->atr; static struct i2c_atr_alias_pair *c2a; int i; =20 @@ -157,15 +156,8 @@ static int i2c_atr_map_msgs(struct i2c_atr_chan *chan,= struct i2c_msg *msgs, =20 c2a =3D i2c_atr_find_mapping_by_addr(&chan->alias_list, msgs[i].addr); - if (!c2a) { - dev_err(atr->dev, "client 0x%02x not mapped!\n", - msgs[i].addr); - - while (i--) - msgs[i].addr =3D chan->orig_addrs[i]; - - return -ENXIO; - } + if (!c2a) + continue; =20 msgs[i].addr =3D c2a->alias; } --=20 2.43.0 From nobody Mon Feb 9 00:06:25 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9C76F18A6DC; Fri, 22 Nov 2024 07:52:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732261939; cv=none; b=bv9uH4D36EbS95GpWmjUIilitpx/i7BRgUi5DnUCRtN8OsojGjYZ6xIb5bDfuL5GtHdzmB2CVesKeojW9G+9eSvtwtpTpMaEQMebBVTj+1au6kwr8+DBKEQgehWB+/Qqc8pFcqgG9SYq8nX1NmFTLcoMXKFIBy7uDZu23Xg5jDc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732261939; c=relaxed/simple; bh=qMne2asV7Q0TXeki4gIxvhn9LMPemEYp0iLpLeUbjY8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dCGpnG1o4MO+ESlH3V13/YvkSs//et8bQwMQC5ZqlJRKFFvWqchDjuJvwm5N2xmDa7J93WIdmHeXSzVSXrcCLOPLHPVyb1A2W6y4KFzK7JxUiy29XZ9BaFG29wcjQT48Fm/571xKNt/vwQJCaDJNpo6D3E8mWl+HX2aq4gT/5Iw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=YJptDc2L; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="YJptDc2L" Received: from [127.0.1.1] (91-157-155-49.elisa-laajakaista.fi [91.157.155.49]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 23992F86; Fri, 22 Nov 2024 08:51:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1732261912; bh=qMne2asV7Q0TXeki4gIxvhn9LMPemEYp0iLpLeUbjY8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=YJptDc2LCl/pg6IA5bY6BcYFrB5ryna5gagl+4qrWfQA+iK3dciahTt6jdBy7alLS PKRDdyFZ9NyKui3qjsZA3nFaL3/kUulBmzJSvPvZmtDSru5e/sxt/YwgP7prL4Xm4F 6PBt7+mdnWgVM4ut59IngW0KMJzYZU+uXtwh1pR0= From: Tomi Valkeinen Date: Fri, 22 Nov 2024 09:51:39 +0200 Subject: [PATCH 2/3] i2c: atr: Fix lockdep for nested ATRs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241122-i2c-atr-fixes-v1-2-62c51ce790be@ideasonboard.com> References: <20241122-i2c-atr-fixes-v1-0-62c51ce790be@ideasonboard.com> In-Reply-To: <20241122-i2c-atr-fixes-v1-0-62c51ce790be@ideasonboard.com> To: Luca Ceresoli , Wolfram Sang , Andy Shevchenko , Sakari Ailus Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Wolfram Sang , Mauro Carvalho Chehab , Cosmin Tanislav , Tomi Valkeinen , Tomi Valkeinen X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2972; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=X+j1k6E0LQY9S62/kgsLP2Vw7AUmIiJT8pkvs76+S60=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBnQDgoZlON6xzLbQm9JcuXZn1w3F8A8TpDzSlJ/ FHRDzkhmAqJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ0A4KAAKCRD6PaqMvJYe 9UAMD/9eTniacDdMLDLKjk6fIwo6qrtzPNlaU02TNyfMCRjWWeKQaVwUuVlYnW9JAwk89R6rdvD IvZM8ziqILKVjL1GS8oMzeMUrsqvGjlOLTgwFPXdAWu/58eZCXlV7AtI6MtDJN6S3U9jfjt3pbB cHKsTqTjpnc2/AXsVEwWDkQKImoLaXjc2EvQ3+zaG3KVQMwAl8jbjLc/oDgpFqosHOuRdqTMwK+ bTRG6SCAV5l+uHrYFAQDAkep1asgziGop9ZfVsMULsn/zBUz3kO33AXFgwMjoODHkoC21brY5rU 2ZQn1g0D7FK6m3AEeDf6UuL/OmUtdEoxZwFY5GiK4+FAPIaBZzKrNyVO+Yz4c56r6zTA2Mb3y4X nqNbfOAp3Pie5JIwLy1OIdr7H2Y9CMuESnJozMm5+je1YxuR/RfunhsS9YU18OBzkdDtL2UARiB I5AXi2GXIxoePLDVi5FjDHsd+QRQp4J7pe0s9hJ97yr5cN1sgP/pbHHVhkvuAypgKxtbWxIL/UG obWuWcGesuZfA6cKXrTLOK8zVsbhlzPiuIfrUsBTnow4/QI01o7BtTseNjUJAwy/oV8uzl+62f7 PfigZ8AQiPLyWAUQU4lVlsEKPJrjj4N1VEu0g9NbsJZBaOyfJRf+PoeyDf7+o4OVszP37Hqw9f6 SdKFdcYvaM4sxdg== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 From: Tomi Valkeinen When we have an ATR, and another ATR as a subdevice of the first ATR, we get lockdep warnings for the i2c_atr.lock and i2c_atr_chan.orig_addrs_lock. This is because lockdep uses a static key for the locks, and doesn't see the locks of the separate ATR instances as separate. Fix this by generating a dynamic lock key per lock instance. Signed-off-by: Tomi Valkeinen --- drivers/i2c/i2c-atr.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index ef5adafa9bf4..9bdbd94b5054 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -54,6 +54,7 @@ struct i2c_atr_chan { =20 /* Lock orig_addrs during xfer */ struct mutex orig_addrs_lock; + struct lock_class_key orig_addrs_lock_key; u16 *orig_addrs; unsigned int orig_addrs_size; }; @@ -84,6 +85,7 @@ struct i2c_atr { struct i2c_algorithm algo; /* lock for the I2C bus segment (see struct i2c_lock_operations) */ struct mutex lock; + struct lock_class_key lock_key; int max_adapters; =20 size_t num_aliases; @@ -505,7 +507,10 @@ struct i2c_atr *i2c_atr_new(struct i2c_adapter *parent= , struct device *dev, if (!atr) return ERR_PTR(-ENOMEM); =20 + lockdep_register_key(&atr->lock_key); mutex_init(&atr->lock); + lockdep_set_class(&atr->lock, &atr->lock_key); + spin_lock_init(&atr->alias_mask_lock); =20 atr->parent =3D parent; @@ -535,6 +540,7 @@ struct i2c_atr *i2c_atr_new(struct i2c_adapter *parent,= struct device *dev, kfree(atr->aliases); err_destroy_mutex: mutex_destroy(&atr->lock); + lockdep_unregister_key(&atr->lock_key); kfree(atr); =20 return ERR_PTR(ret); @@ -552,6 +558,7 @@ void i2c_atr_delete(struct i2c_atr *atr) bitmap_free(atr->alias_use_mask); kfree(atr->aliases); mutex_destroy(&atr->lock); + lockdep_unregister_key(&atr->lock_key); kfree(atr); } EXPORT_SYMBOL_NS_GPL(i2c_atr_delete, I2C_ATR); @@ -586,7 +593,9 @@ int i2c_atr_add_adapter(struct i2c_atr *atr, u32 chan_i= d, chan->atr =3D atr; chan->chan_id =3D chan_id; INIT_LIST_HEAD(&chan->alias_list); + lockdep_register_key(&chan->orig_addrs_lock_key); mutex_init(&chan->orig_addrs_lock); + lockdep_set_class(&chan->orig_addrs_lock, &chan->orig_addrs_lock_key); =20 snprintf(chan->adap.name, sizeof(chan->adap.name), "i2c-%d-atr-%d", i2c_adapter_id(parent), chan_id); @@ -646,6 +655,7 @@ int i2c_atr_add_adapter(struct i2c_atr *atr, u32 chan_i= d, err_fwnode_put: fwnode_handle_put(dev_fwnode(&chan->adap.dev)); mutex_destroy(&chan->orig_addrs_lock); + lockdep_unregister_key(&chan->orig_addrs_lock_key); kfree(chan); return ret; } @@ -679,6 +689,7 @@ void i2c_atr_del_adapter(struct i2c_atr *atr, u32 chan_= id) =20 fwnode_handle_put(fwnode); mutex_destroy(&chan->orig_addrs_lock); + lockdep_unregister_key(&chan->orig_addrs_lock_key); kfree(chan->orig_addrs); kfree(chan); } --=20 2.43.0 From nobody Mon Feb 9 00:06:25 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DF93218A6CC; Fri, 22 Nov 2024 07:52:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732261939; cv=none; b=mw5tCxtPSsHv/cy61zWOr1eGHkQXWPEV3itRtToJ6krMJIEKiS4LzA0K3elBIAwvMb54qE2OR2T/MpHx+TvY5Jaiv/o/de0EAO4cMw1ZU288s6aizK2sTYeF3elXWjsfOT8lWqjAybEYAItVC98v5wIUqithr4kQ4sCXDWWdmZs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732261939; c=relaxed/simple; bh=edVSjzhoWUDOtk1q0JzE9bRTYE8O3Hs6haOSqgo0/KM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Rjgas4ArBXhvk68yY/h9Ni5cZHL6MFAxb2T+JQ2eCdlRZwpya8PqimAEQ2GLz0upk7ipEYFcRBfOqmf71zcXw5pODXI3hAUv1N+4YX2fntfZMCDlf/tThjSqXAyEHV1sB1O22g4RRqMVyR0yla9DmXckRdG1W1ldWGaSJkayvV4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=Btt7fQQQ; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="Btt7fQQQ" Received: from [127.0.1.1] (91-157-155-49.elisa-laajakaista.fi [91.157.155.49]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id D35AE10B9; Fri, 22 Nov 2024 08:51:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1732261913; bh=edVSjzhoWUDOtk1q0JzE9bRTYE8O3Hs6haOSqgo0/KM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Btt7fQQQ5ewajSSXr6hl/RT7nrckpdEUn6LFr82a6yzX3PshkBeKwVaVCwTJeM2Jq 37hJx0yKjUxEEadnGPPGEdtudUrZYzDvoTbGClQyIeQhSn0eLKz7bHm4ks2vochQRc 78dYNQ/m+La5G6DE3pW2BAMtHL2INZ507+LDaNxI= From: Tomi Valkeinen Date: Fri, 22 Nov 2024 09:51:40 +0200 Subject: [PATCH 3/3] i2c: atr: Fix client detach Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241122-i2c-atr-fixes-v1-3-62c51ce790be@ideasonboard.com> References: <20241122-i2c-atr-fixes-v1-0-62c51ce790be@ideasonboard.com> In-Reply-To: <20241122-i2c-atr-fixes-v1-0-62c51ce790be@ideasonboard.com> To: Luca Ceresoli , Wolfram Sang , Andy Shevchenko , Sakari Ailus Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Wolfram Sang , Mauro Carvalho Chehab , Cosmin Tanislav , Tomi Valkeinen , Tomi Valkeinen , stable@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1208; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=y4zkY/aSb+oAW8wi1OZRGAkS9LvBKaab9mHJC6eDWH8=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBnQDgpCjjz9QsI4cov2rGk+C52uzZuwgD5A6P6v EZQAg+wr/KJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ0A4KQAKCRD6PaqMvJYe 9af6EACHSWuHCtqDfVi0cQmEVDbXaLAHMAueafBaeYWAN9hNc03RnXuG71yuFrBQi0Hsr8pzyog DFe2m9PfxXj/Dda5ONKOnaQT1ueiptUpDBlZfeNZ6o3l7uYuBPg+JGu62GcxK2XoP5ZgiuGB1Id NtA38q+QL/D9Z9bCkNwOZ7RRoP41Gj3iagNZ1LHNE1heHn3ktMZixR8D5dsN9tN/xqxUuNxl5x8 y31E/b5Gfy6lgaxCg9c59gI87byD2LD1E575FW8CReWNFTZj0Zj4NmsmnlN5fqnIdEB3+7pcaMt LGwkHxbhoJki0C6IqE/Xgevz5xyFnp8dDdhBJGJGmMMMJjEhmJ9v2LjTNIgY7hbCsWFNvhjL2zJ 4lXssQTPdnpB0K5mApoIRqFbsyje6lG39tRhYVuJlz5JQLWveviTDuItXl3sGZ4z4gs9tB9zrwW oTaG1wr0HV7ew8+iq3Wku175xoT83l+dkgELC2a1p68W+/XOS/ResVjvvAf1LVSEikLzuBAF7jc J4oJpOkb3ajy55yYbYWfZUUCFsW1XdINm7/9MT7HMGHfbYoOtdbeU/PjsyR7HHO1AVTQ2aJyyir V42yHWnAjuaijltC/q/TXfUer3Jxje8KgdPgnoqvazLIMNT8na16D6MA4W+DYjCb3Z9RiwosNa8 XiTMR7GBY/mIY3w== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 From: Tomi Valkeinen i2c-atr catches the BUS_NOTIFY_DEL_DEVICE event on the bus and removes the translation by calling i2c_atr_detach_client(). However, BUS_NOTIFY_DEL_DEVICE happens when the device is about to be removed from this bus, i.e. before removal, and thus before calling .remove() on the driver. If the driver happens to do any i2c transactions in its remove(), they will fail. Fix this by catching BUS_NOTIFY_REMOVED_DEVICE instead, thus removing the translation only after the device is actually removed. Fixes: a076a860acae ("media: i2c: add I2C Address Translator (ATR) support") Cc: stable@vger.kernel.org Signed-off-by: Tomi Valkeinen --- drivers/i2c/i2c-atr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index 9bdbd94b5054..2ce12d42c24f 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -406,7 +406,7 @@ static int i2c_atr_bus_notifier_call(struct notifier_bl= ock *nb, dev_name(dev), ret); break; =20 - case BUS_NOTIFY_DEL_DEVICE: + case BUS_NOTIFY_REMOVED_DEVICE: i2c_atr_detach_client(client->adapter, client); break; =20 --=20 2.43.0