summaryrefslogtreecommitdiff
path: root/net/rds
diff options
context:
space:
mode:
authorBenjamin Poirier <bpoirier@suse.com>2017-07-21 21:36:26 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-11-30 11:37:25 +0300
commitbbb1fc744894bdba5a94b46b3e178cfb2330831d (patch)
tree9cc30340fb57bfc52d880fcd5f1dc6e7f3f560af /net/rds
parent5df4097cfc7049f64cc0896ede59e94087abaefe (diff)
downloadlinux-bbb1fc744894bdba5a94b46b3e178cfb2330831d.tar.xz
e1000e: Separate signaling for link check/link up
commit 19110cfbb34d4af0cdfe14cd243f3b09dc95b013 upstream. Lennart reported the following race condition: \ e1000_watchdog_task \ e1000e_has_link \ hw->mac.ops.check_for_link() === e1000e_check_for_copper_link /* link is up */ mac->get_link_status = false; /* interrupt */ \ e1000_msix_other hw->mac.get_link_status = true; link_active = !hw->mac.get_link_status /* link_active is false, wrongly */ This problem arises because the single flag get_link_status is used to signal two different states: link status needs checking and link status is down. Avoid the problem by using the return value of .check_for_link to signal the link status to e1000e_has_link(). Reported-by: Lennart Sorensen <lsorense@csclub.uwaterloo.ca> Signed-off-by: Benjamin Poirier <bpoirier@suse.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Amit Pundir <amit.pundir@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/rds')
0 files changed, 0 insertions, 0 deletions