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: <0BA3FCBA62E2DC44AF3030971E174FB3A8F4AD47@hasmsx107.ger.corp.intel.com> Date: Sun, 19 Feb 2017 09:16:01 +0000 From: "Grumbach, Emmanuel" <emmanuel.grumbach@...el.com> To: "Luis R. Rodriguez" <mcgrof@...nel.org>, "Berg, Johannes" <johannes.berg@...el.com>, "Coelho, Luciano" <luciano.coelho@...el.com>, "tj@...nel.org" <tj@...nel.org>, "arjan@...ux.intel.com" <arjan@...ux.intel.com>, "ming.lei@...onical.com" <ming.lei@...onical.com>, "zajec5@...il.com" <zajec5@...il.com> CC: "jeyu@...hat.com" <jeyu@...hat.com>, "rusty@...tcorp.com.au" <rusty@...tcorp.com.au>, "pmladek@...e.com" <pmladek@...e.com>, "gregkh@...uxfoundation.org" <gregkh@...uxfoundation.org>, linuxwifi <linuxwifi@...el.com>, "linux-wireless@...r.kernel.org" <linux-wireless@...r.kernel.org>, "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org> Subject: RE: [RFC 1/5] iwlwifi: fix drv cleanup on opmode registration failure Hi Luis, > > The firmware async callback handles the device's opmode start call, but > optionally also allows opmode registration to take care of its opmode start. If > the firmware callback handles it its error path in case of opmode start failure > has a few pieces of code missing from the opmode registration. The opmode > registration hanlder has no cleanup at all. Sync both error paths. > > This should in theory fix a detangled drv from the drv list should either of the > opmode modules loaded and handled registration for the drv. > > The path of having the opmode registration deal with the drv opmode start is > actually the more common path. The other path, from the async callback is > rathe rare (1/8 or so times for me) -- it happens when the the opmode > driver's init routine completed prior to the driver's async callback opmode > start call. I'd claim it should never happen unless you have several devices on the system using the same opmode, or unless you do: modprobe iwlwifi #which will load iwl{d,m}vm rmmod iwl{d,m}vm #and do _not_ remove iwlwifi modprobe iwlwifi > > Signed-off-by: Luis R. Rodriguez <mcgrof@...nel.org> > --- Luca is OOO, but this looks fine to me. > drivers/net/wireless/intel/iwlwifi/iwl-drv.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c > b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c > index be466a074c1d..e198d6f5fcea 100644 > --- a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c > +++ b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c > @@ -1611,8 +1611,13 @@ int iwl_opmode_register(const char *name, const > struct iwl_op_mode_ops *ops) > continue; > op->ops = ops; > /* TODO: need to handle exceptional case */ > - list_for_each_entry(drv, &op->drv, list) > + list_for_each_entry(drv, &op->drv, list) { > drv->op_mode = _iwl_op_mode_start(drv, op); > + if (!drv->op_mode) { > + complete(&drv- > >request_firmware_complete); > + device_release_driver(drv->trans->dev); > + } > + } > > mutex_unlock(&iwlwifi_opmode_table_mtx); > return 0; > -- > 2.11.0
Powered by blists - more mailing lists