kernel: bump 4.9 to 4.9.63
[oweals/openwrt.git] / target / linux / generic / pending-4.9 / 190-1-5-e1000e-Fix-error-path-in-link-detection.patch
1 From patchwork Fri Jul 21 18:36:23 2017
2 Content-Type: text/plain; charset="utf-8"
3 MIME-Version: 1.0
4 Content-Transfer-Encoding: 7bit
5 Subject: [1/5] e1000e: Fix error path in link detection
6 From: Benjamin Poirier <bpoirier@suse.com>
7 X-Patchwork-Id: 9857487
8 Message-Id: <20170721183627.13373-1-bpoirier@suse.com>
9 To: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
10 Cc: Lennart Sorensen <lsorense@csclub.uwaterloo.ca>,
11  intel-wired-lan@lists.osuosl.org, netdev@vger.kernel.org,
12  linux-kernel@vger.kernel.org
13 Date: Fri, 21 Jul 2017 11:36:23 -0700
14
15 In case of error from e1e_rphy(), the loop will exit early and "success"
16 will be set to true erroneously.
17
18 Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
19 ---
20  drivers/net/ethernet/intel/e1000e/phy.c | 7 ++++---
21  1 file changed, 4 insertions(+), 3 deletions(-)
22
23 --- a/drivers/net/ethernet/intel/e1000e/phy.c
24 +++ b/drivers/net/ethernet/intel/e1000e/phy.c
25 @@ -1744,6 +1744,7 @@ s32 e1000e_phy_has_link_generic(struct e
26         s32 ret_val = 0;
27         u16 i, phy_status;
28  
29 +       *success = false;
30         for (i = 0; i < iterations; i++) {
31                 /* Some PHYs require the MII_BMSR register to be read
32                  * twice due to the link bit being sticky.  No harm doing
33 @@ -1763,16 +1764,16 @@ s32 e1000e_phy_has_link_generic(struct e
34                 ret_val = e1e_rphy(hw, MII_BMSR, &phy_status);
35                 if (ret_val)
36                         break;
37 -               if (phy_status & BMSR_LSTATUS)
38 +               if (phy_status & BMSR_LSTATUS) {
39 +                       *success = true;
40                         break;
41 +               }
42                 if (usec_interval >= 1000)
43                         msleep(usec_interval / 1000);
44                 else
45                         udelay(usec_interval);
46         }
47  
48 -       *success = (i < iterations);
49 -
50         return ret_val;
51  }
52