]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
staging: unisys: remove redundant unlocks of visornic_devdata.priv_lock
authorTim Sell <Timothy.Sell@unisys.com>
Mon, 9 Jan 2017 18:02:27 +0000 (13:02 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 10 Jan 2017 16:29:46 +0000 (17:29 +0100)
These redundant unlocks of visornic_devdata.priv_lock would result in
the RHEL 7.2 guests hanging during service partition recovery testing.

__Testing__

* An scp of a large file was started from a remote host TO the RHEL 7.2
  Linux guest.

* During the scp transfer, s-Par service partition recovery was forced
  twice. After each occasion, I verified that the guest recovered
  completely (all s-Par guest devices), and that the file transfer
  resumed.

* Within the RHEL 7.2 guest environment, copied the large file to
  another location in the local filesystem.

* During the copy, s-Par service partition recovery was again forced
  twice. After each occasion, I verified that the guest recovered
  completely (all s-Par guest devices), and that the copy resumed.

* An scp of the new copy of the large file was started FROM the RHEL 7.2
  guest to a remote host.

* During the scp transfer, s-Par service partition recovery was forced
  twice. After each occasion, I verified that the guest recovered
  completely (all s-Par guest devices), and that the file transfer
  resumed.

* Used cmp to verify that the large file had successfully survived the
  round-trip without becoming corrupted.

Signed-off-by: Tim Sell <Timothy.Sell@unisys.com>
Signed-off-by: David Kershner <david.kershner@unisys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/unisys/visornic/visornic_main.c

index 3a638cad2a1d969ff4f9709df0b61dff7e13a7b0..0a8f36125f5b8ef494ce2dc1524781d299384649 100644 (file)
@@ -461,7 +461,6 @@ visornic_disable_with_timeout(struct net_device *netdev, const int timeout)
                if (devdata->enab_dis_acked)
                        break;
                if (devdata->server_down || devdata->server_change_state) {
-                       spin_unlock_irqrestore(&devdata->priv_lock, flags);
                        dev_dbg(&netdev->dev, "%s server went away\n",
                                __func__);
                        break;
@@ -605,7 +604,6 @@ visornic_enable_with_timeout(struct net_device *netdev, const int timeout)
                if (devdata->enab_dis_acked)
                        break;
                if (devdata->server_down || devdata->server_change_state) {
-                       spin_unlock_irqrestore(&devdata->priv_lock, flags);
                        dev_dbg(&netdev->dev, "%s server went away\n",
                                __func__);
                        break;