diff mbox

[net-2.6] be2net: Fix to avoid firmware update when interface is not open.

Message ID 20101118140755.GA9686@emulex.com
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

Sarveshwar Bandi Nov. 18, 2010, 2:07 p.m. UTC
Since interrupts are enabled only when open is called on the interface,
Attempting a firmware update operation when interface is down could lead to
partial success or failure of operation. This fix fails the request if
netif_running is false.

Signed-off-by: Sarveshwar Bandi <Sarveshwar.Bandi@emulex.com>
---
 drivers/net/benet/be_main.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

Comments

David Miller Nov. 18, 2010, 5:26 p.m. UTC | #1
From: Sarveshwar Bandi <Sarveshwar.Bandi@emulex.com>
Date: Thu, 18 Nov 2010 19:37:56 +0530

> Since interrupts are enabled only when open is called on the interface,
> Attempting a firmware update operation when interface is down could lead to
> partial success or failure of operation. This fix fails the request if
> netif_running is false.
> 
> Signed-off-by: Sarveshwar Bandi <Sarveshwar.Bandi@emulex.com>

These status values you are returning from be_load_fw() go all
the way back to userspace.

Therefore "-1" is not appropriate, and instead you should return
real negative errno error values such as -EINVAL, -ENODEV, and
the like.

Please fix this up and resubmit your patch.

Thank you.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c
index c36cd2f..cc85cf2 100644
--- a/drivers/net/benet/be_main.c
+++ b/drivers/net/benet/be_main.c
@@ -2458,6 +2458,12 @@  int be_load_fw(struct be_adapter *adapte
 	int status, i = 0, num_imgs = 0;
 	const u8 *p;
 
+	if (!netif_running(adapter->netdev)) {
+		dev_err(&adapter->pdev->dev,
+			"Firmware load not allowed (interface is down)\n");
+		return -1;
+	}
+
 	strcpy(fw_file, func);
 
 	status = request_firmware(&fw, fw_file, &adapter->pdev->dev);