p54: prevent upload of wrong firmwares
PATCH 2/3 p54: prevent upload of wrong firmwares
This patch will prevent anyone to upload a firmware which was not designed for his device.
There's still a catch:
There is no easy way to detect if a firmware is for PCI or for USB (1st Gen), because they all share the same LM86 identifier.
Signed-off-by Christian Lamparter <[email protected]>
---
drivers/net/wireless/p54/p54pci.c +6 -0
@@ -79,6 +79,12 @@ static int p54p_upload_firmware(struct iif (err)return err; +if (priv->common.fw_interface !=FW_LM86 ) { +dev_err (&priv->pdev->dev,"wrong firmware, " +"please get a LM86(PCI) firmware a try again.\n" ); +return -EINVAL ; + } + data = (__le32 *) priv->firmware->data; remains = priv->firmware->size; device_addr =ISL38XX_DEV_FIRMWARE_ADDR ;
drivers/net/wireless/p54/p54usb.c +15 -0
@@ -502,6 +502,13 @@ static int p54u_upload_firmware_3887(strif (err) goto err_upload_failed; +if (priv->common.fw_interface !=FW_LM87 ) { +dev_err (&priv->udev->dev,"wrong firmware, " +"please get a LM87 firmware and try again.\n" ); + err = -EINVAL ; + goto err_upload_failed; + } + left = block_size =min ((size_t )P54U_FW_BLOCK , fw_entry->size);strcpy (buf, p54u_firmware_upload_3887); left -=strlen (p54u_firmware_upload_3887);
@@ -652,6 +659,14 @@ static int p54u_upload_firmware_net2280(return err; } +if (priv->common.fw_interface !=FW_LM86 ) { +dev_err (&priv->udev->dev,"wrong firmware, " +"please get a LM86(USB) firmware and try again.\n" ); +kfree (buf); +release_firmware (fw_entry); +return -EINVAL ; + } +#define P54U_WRITE (type, addr, data) \ do {\ err = p54u_write(priv, buf, type,\