Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 68d715f6 authored by stephen hemminger's avatar stephen hemminger Committed by David S. Miller
Browse files

netvsc: check error return when restoring channels and mtu



If setting new values fails, and the attempt to restore original
settings fails. Then log an error and leave device down.
This should never happen, but if it does don't go down in flames.

Signed-off-by: default avatarStephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 16ba3266
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -845,7 +845,13 @@ static int netvsc_set_channels(struct net_device *net,
	} else {
		ret = PTR_ERR(nvdev);
		device_info.num_chn = orig;
		rndis_filter_device_add(dev, &device_info);
		nvdev = rndis_filter_device_add(dev, &device_info);

		if (IS_ERR(nvdev)) {
			netdev_err(net, "restoring channel setting failed: %ld\n",
				   PTR_ERR(nvdev));
			return ret;
		}
	}

	if (was_opened)
@@ -953,10 +959,16 @@ static int netvsc_change_mtu(struct net_device *ndev, int mtu)

		/* Attempt rollback to original MTU */
		ndev->mtu = orig_mtu;
		rndis_filter_device_add(hdev, &device_info);
		nvdev = rndis_filter_device_add(hdev, &device_info);

		if (vf_netdev)
			dev_set_mtu(vf_netdev, orig_mtu);

		if (IS_ERR(nvdev)) {
			netdev_err(ndev, "restoring mtu failed: %ld\n",
				   PTR_ERR(nvdev));
			return ret;
		}
	}

	if (was_opened)