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: <20171212124432.641508480@linuxfoundation.org> Date: Tue, 12 Dec 2017 13:44:05 +0100 From: Greg Kroah-Hartman <gregkh@...uxfoundation.org> To: linux-kernel@...r.kernel.org Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>, stable@...r.kernel.org, Stefan Wahren <stefan.wahren@...e.com>, Hante Meuleman <hante.meuleman@...adcom.com>, Pieter-Paul Giesberts <pieter-paul.giesberts@...adcom.com>, Franky Lin <franky.lin@...adcom.com>, Arend van Spriel <arend.vanspriel@...adcom.com>, Kalle Valo <kvalo@...eaurora.org> Subject: [PATCH 4.9 035/148] brcmfmac: change driver unbind order of the sdio function devices 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ From: Arend Van Spriel <arend.vanspriel@...adcom.com> commit 5c3de777bdaf48bd0cfb43097c0d0fb85056cab7 upstream. In the function brcmf_sdio_firmware_callback() the driver is unbound from the sdio function devices in the error path. However, the order in which it is done resulted in a use-after-free issue (see brcmf_ops_sdio_remove() in bcmsdh.c). Hence change the order and first unbind sdio function #2 device and then unbind sdio function #1 device. Fixes: 7a51461fc2da ("brcmfmac: unbind all devices upon failure in firmware callback") Reported-by: Stefan Wahren <stefan.wahren@...e.com> Reviewed-by: Hante Meuleman <hante.meuleman@...adcom.com> Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@...adcom.com> Reviewed-by: Franky Lin <franky.lin@...adcom.com> Signed-off-by: Arend van Spriel <arend.vanspriel@...adcom.com> Signed-off-by: Kalle Valo <kvalo@...eaurora.org> Signed-off-by: Greg Kroah-Hartman <gregkh@...uxfoundation.org> --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c @@ -4080,8 +4080,8 @@ release: sdio_release_host(sdiodev->func[1]); fail: brcmf_dbg(TRACE, "failed: dev=%s, err=%d\n", dev_name(dev), err); - device_release_driver(dev); device_release_driver(&sdiodev->func[2]->dev); + device_release_driver(dev); } struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev)
Powered by blists - more mailing lists