| From 0939accd696eb0743b507c33c5e96263f936f9f1 Mon Sep 17 00:00:00 2001 |
| From: Govindarajulu Varadarajan <gvaradar@cisco.com> |
| Date: Mon, 18 Jun 2018 10:01:05 -0700 |
| Subject: enic: do not overwrite error code |
| |
| [ Upstream commit 56f772279a762984f6e9ebbf24a7c829faba5712 ] |
| |
| In failure path, we overwrite err to what vnic_rq_disable() returns. In |
| case it returns 0, enic_open() returns success in case of error. |
| |
| Reported-by: Ben Hutchings <ben.hutchings@codethink.co.uk> |
| Fixes: e8588e268509 ("enic: enable rq before updating rq descriptors") |
| Signed-off-by: Govindarajulu Varadarajan <gvaradar@cisco.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/cisco/enic/enic_main.c | 9 ++++----- |
| 1 file changed, 4 insertions(+), 5 deletions(-) |
| |
| diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c |
| index f314be07ec58..07282eb76867 100644 |
| --- a/drivers/net/ethernet/cisco/enic/enic_main.c |
| +++ b/drivers/net/ethernet/cisco/enic/enic_main.c |
| @@ -1708,7 +1708,7 @@ static int enic_open(struct net_device *netdev) |
| { |
| struct enic *enic = netdev_priv(netdev); |
| unsigned int i; |
| - int err; |
| + int err, ret; |
| |
| err = enic_request_intr(enic); |
| if (err) { |
| @@ -1766,10 +1766,9 @@ static int enic_open(struct net_device *netdev) |
| |
| err_out_free_rq: |
| for (i = 0; i < enic->rq_count; i++) { |
| - err = vnic_rq_disable(&enic->rq[i]); |
| - if (err) |
| - return err; |
| - vnic_rq_clean(&enic->rq[i], enic_free_rq_buf); |
| + ret = vnic_rq_disable(&enic->rq[i]); |
| + if (!ret) |
| + vnic_rq_clean(&enic->rq[i], enic_free_rq_buf); |
| } |
| enic_dev_notify_unset(enic); |
| err_out_free_intr: |
| -- |
| 2.17.1 |
| |