lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <e0dc7291-b1a3-0cd2-32c9-d3486e591c5f@wanadoo.fr> Date: Wed, 2 Mar 2022 20:42:08 +0100 From: Marion & Christophe JAILLET <christophe.jaillet@...adoo.fr> To: Peter Rosin <peda@...ntia.se>, "linux-i2c@...r.kernel.org" <linux-i2c@...r.kernel.org> Cc: Wolfram Sang <wsa+renesas@...g-engineering.com>, "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org> Subject: Re: *** SPAM *** [PATCH] i2c: mux: demux-pinctrl: do not deactivate a master that is not active Le 02/03/2022 à 12:22, Peter Rosin a écrit : > Attempting to rollback the activation of the current master when > the current master has not been activated is bad. priv->cur_chan > and priv->cur_adap are both still zeroed out and the rollback > may result in attempts to revert an of changeset that has not been > applied and do result in calls to both del and put the zeroed out > i2c_adapter. Maybe it crashes, or whatever, but it's bad in any > case. > > Fixes: e9d1a0a41d44 ("i2c: mux: demux-pinctrl: Fix an error handling path in 'i2c_demux_pinctrl_probe()'") > Cc: Christophe JAILLET <christophe.jaillet@...adoo.fr> > Signed-off-by: Peter Rosin <peda@...ntia.se> > --- > drivers/i2c/muxes/i2c-demux-pinctrl.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > Hi! > > Either that, or I'm missing something. I found this issue when > reading code, and have made no tests to verify if my analysis > is correct. > > Cheers, > Peter > > diff --git a/drivers/i2c/muxes/i2c-demux-pinctrl.c b/drivers/i2c/muxes/i2c-demux-pinctrl.c > index 5365199a31f4..f7a7405d4350 100644 > --- a/drivers/i2c/muxes/i2c-demux-pinctrl.c > +++ b/drivers/i2c/muxes/i2c-demux-pinctrl.c > @@ -261,7 +261,7 @@ static int i2c_demux_pinctrl_probe(struct platform_device *pdev) > > err = device_create_file(&pdev->dev, &dev_attr_available_masters); > if (err) > - goto err_rollback; > + goto err_rollback_activation; > > err = device_create_file(&pdev->dev, &dev_attr_current_master); > if (err) > @@ -271,8 +271,9 @@ static int i2c_demux_pinctrl_probe(struct platform_device *pdev) > > err_rollback_available: > device_remove_file(&pdev->dev, &dev_attr_available_masters); > -err_rollback: > +err_rollback_activation: > i2c_demux_deactivate_master(priv); > +err_rollback: > for (j = 0; j < i; j++) { > of_node_put(priv->chan[j].parent_np); > of_changeset_destroy(&priv->chan[j].chgset); For what it worth, LGTM. CJ
Powered by blists - more mailing lists