From 1ddd971170ec7af0468a440753937d770eca630f Mon Sep 17 00:00:00 2001 From: Malcolm Priestley Date: Sun, 7 Oct 2012 11:41:31 +0100 Subject: [PATCH] --- yaml --- r: 337110 b: refs/heads/master c: f20fbdf829c11c3c29ee94c0c10ec6195ac4c362 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/staging/vt6656/device.h | 1 - trunk/drivers/staging/vt6656/firmware.c | 22 ++++++++++------------ trunk/drivers/staging/vt6656/main_usb.c | 1 - 4 files changed, 11 insertions(+), 15 deletions(-) diff --git a/[refs] b/[refs] index 9cde23187f4e..ff6198eb5c98 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ab1dd9963137a1e122004d5378a581bf16ae9bc8 +refs/heads/master: f20fbdf829c11c3c29ee94c0c10ec6195ac4c362 diff --git a/trunk/drivers/staging/vt6656/device.h b/trunk/drivers/staging/vt6656/device.h index 6370d1039103..8d9b9c1a2d50 100644 --- a/trunk/drivers/staging/vt6656/device.h +++ b/trunk/drivers/staging/vt6656/device.h @@ -418,7 +418,6 @@ typedef struct __device_info { struct net_device* dev; struct net_device_stats stats; - const struct firmware *firmware; OPTIONS sOpts; diff --git a/trunk/drivers/staging/vt6656/firmware.c b/trunk/drivers/staging/vt6656/firmware.c index 8c8126a3540b..8831ea03c001 100644 --- a/trunk/drivers/staging/vt6656/firmware.c +++ b/trunk/drivers/staging/vt6656/firmware.c @@ -61,28 +61,24 @@ FIRMWAREbDownload( PSDevice pDevice ) { + struct device *dev = &pDevice->usb->dev; const struct firmware *fw; int NdisStatus; void *pBuffer = NULL; BOOL result = FALSE; u16 wLength; - int ii; + int ii, rc; + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"---->Download firmware\n"); spin_unlock_irq(&pDevice->lock); - if (!pDevice->firmware) { - struct device *dev = &pDevice->usb->dev; - int rc; - - rc = request_firmware(&pDevice->firmware, FIRMWARE_NAME, dev); - if (rc) { - dev_err(dev, "firmware file %s request failed (%d)\n", - FIRMWARE_NAME, rc); + rc = request_firmware(&fw, FIRMWARE_NAME, dev); + if (rc) { + dev_err(dev, "firmware file %s request failed (%d)\n", + FIRMWARE_NAME, rc); goto out; - } } - fw = pDevice->firmware; pBuffer = kmalloc(FIRMWARE_CHUNK_SIZE, GFP_KERNEL); if (!pBuffer) @@ -103,10 +99,12 @@ FIRMWAREbDownload( DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Download firmware...%d %zu\n", ii, fw->size); if (NdisStatus != STATUS_SUCCESS) - goto out; + goto free_fw; } result = TRUE; +free_fw: + release_firmware(fw); out: kfree(pBuffer); diff --git a/trunk/drivers/staging/vt6656/main_usb.c b/trunk/drivers/staging/vt6656/main_usb.c index ad422dea702b..d402df9161e1 100644 --- a/trunk/drivers/staging/vt6656/main_usb.c +++ b/trunk/drivers/staging/vt6656/main_usb.c @@ -1219,7 +1219,6 @@ static void __devexit vt6656_disconnect(struct usb_interface *intf) } device_release_WPADEV(device); - release_firmware(device->firmware); usb_set_intfdata(intf, NULL); usb_put_dev(interface_to_usbdev(intf));