From: Arnd Bergmann Date: Thu, 12 Jan 2006 22:16:41 +0000 (-0500) Subject: [PATCH] spidernet: check if firmware was loaded correctly X-Git-Tag: v2.6.16-rc2~366^2~55 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0d3ea1666f1894a874681fe33e2cb7fee41a0c73;p=linux-2.6 [PATCH] spidernet: check if firmware was loaded correctly Uploading the device firmware may fail if wrong input data was provided by the user. This checks for the condition. From: Jens Osterkamp Signed-off-by: Jens Osterkamp Signed-off-by: Arnd Bergmann Signed-off-by: Jeff Garzik --- diff --git a/drivers/net/spider_net.c b/drivers/net/spider_net.c index 0d765f1733..2154469678 100644 --- a/drivers/net/spider_net.c +++ b/drivers/net/spider_net.c @@ -1836,7 +1836,7 @@ spider_net_setup_phy(struct spider_net_card *card) * spider_net_download_firmware loads the firmware opened by * spider_net_init_firmware into the adapter. */ -static void +static int spider_net_download_firmware(struct spider_net_card *card, const struct firmware *firmware) { @@ -1857,8 +1857,13 @@ spider_net_download_firmware(struct spider_net_card *card, } } + if (spider_net_read_reg(card, SPIDER_NET_GSINIT)) + return -EIO; + spider_net_write_reg(card, SPIDER_NET_GSINIT, SPIDER_NET_RUN_SEQ_VALUE); + + return 0; } /** @@ -1909,9 +1914,8 @@ spider_net_init_firmware(struct spider_net_card *card) goto out; } - spider_net_download_firmware(card, firmware); - - err = 0; + if (!spider_net_download_firmware(card, firmware)) + err = 0; out: release_firmware(firmware);