on sdio remove the bus_if should be configured for close, so
new data from higher layers will be blocked. Also the access
to bus_if in the watchdog should be checked for null pointer
access on sdio remove.
Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
 
 int brcmf_sdio_remove(struct brcmf_sdio_dev *sdiodev)
 {
+       sdiodev->bus_if->state = BRCMF_BUS_DOWN;
+
        if (sdiodev->bus) {
                brcmf_sdbrcm_disconnect(sdiodev->bus);
                sdiodev->bus = NULL;
 
        }
 #ifdef DEBUG
        /* Poll for console output periodically */
-       if (bus_if->state == BRCMF_BUS_DATA &&
+       if (bus_if && bus_if->state == BRCMF_BUS_DATA &&
            bus->console_interval != 0) {
                bus->console.count += BRCMF_WD_POLL_MS;
                if (bus->console.count >= bus->console_interval) {