[SRU][Yakkety][PATCH 0/1] Drivers: hv: util: move waiting for release to hv_utils_transport itself

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[SRU][Yakkety][PATCH 0/1] Drivers: hv: util: move waiting for release to hv_utils_transport itself

Joseph Salisbury-3
BugLink: http://bugs.launchpad.net/bugs/1682561

== SRU Justification ==
Microsoft is observing call traces with the current proposed kernels
that are shown in the bug description.  Commit e9c18ae6eb is the fix
to this issue.  This commit is needed in X, Y and Z.  However, the Yakkey SRU
is here separate from X and Z.  This is because Y does not have commit
0d325d642c648 and X and Z do.  The cherry pick is clean in X, Y and Z, but the
Y resulting patch is different because it doesn not have 0d325d642c648.

This commit was included in mainline in 4.11-rc4.

== Fix ==
commit e9c18ae6eb2b312f16c63e34b43ea23926daa398
Author: Vitaly Kuznetsov <[hidden email]>
Date:   Sat Mar 4 18:13:59 2017 -0700

    Drivers: hv: util: move waiting for release to hv_utils_transport itself


== Test Case ==
A test kernel was built with this patch and tested by the original bug reporter.
The bug reporter states the test kernel resolved the bug.

Vitaly Kuznetsov (1):
  Drivers: hv: util: move waiting for release to hv_utils_transport
    itself

 drivers/hv/hv_utils_transport.c | 12 ++++++++----
 drivers/hv/hv_utils_transport.h |  1 +
 2 files changed, 9 insertions(+), 4 deletions(-)

--
2.7.4


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[SRU][Yakkety][PATCH 1/1] Drivers: hv: util: move waiting for release to hv_utils_transport itself

Joseph Salisbury-3
From: Vitaly Kuznetsov <[hidden email]>

BugLink: http://bugs.launchpad.net/bugs/1682561

Waiting for release_event in all three drivers introduced issues on release
as on_reset() hook is not always called. E.g. if the device was never
opened we will never get the completion.

Move the waiting code to hvutil_transport_destroy() and make sure it is
only called when the device is open. hvt->lock serialization should
guarantee the absence of races.

Fixes: 5a66fecbf6aa ("Drivers: hv: util: kvp: Fix a rescind processing issue")
Fixes: 20951c7535b5 ("Drivers: hv: util: Fcopy: Fix a rescind processing issue")
Fixes: d77044d142e9 ("Drivers: hv: util: Backup: Fix a rescind processing issue")

Reported-by: Dexuan Cui <[hidden email]>
Tested-by: Dexuan Cui <[hidden email]>
Signed-off-by: Vitaly Kuznetsov <[hidden email]>
Signed-off-by: K. Y. Srinivasan <[hidden email]>
Signed-off-by: Greg Kroah-Hartman <[hidden email]>
(cherry picked from commit e9c18ae6eb2b312f16c63e34b43ea23926daa398)
Signed-off-by: Joseph Salisbury <[hidden email]>
---
 drivers/hv/hv_utils_transport.c | 12 ++++++++----
 drivers/hv/hv_utils_transport.h |  1 +
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/hv/hv_utils_transport.c b/drivers/hv/hv_utils_transport.c
index c235a95..4402a71 100644
--- a/drivers/hv/hv_utils_transport.c
+++ b/drivers/hv/hv_utils_transport.c
@@ -182,10 +182,11 @@ static int hvt_op_release(struct inode *inode, struct file *file)
  * connects back.
  */
  hvt_reset(hvt);
- mutex_unlock(&hvt->lock);
 
  if (mode_old == HVUTIL_TRANSPORT_DESTROY)
- hvt_transport_free(hvt);
+ complete(&hvt->release);
+
+ mutex_unlock(&hvt->lock);
 
  return 0;
 }
@@ -304,6 +305,7 @@ struct hvutil_transport *hvutil_transport_init(const char *name,
 
  init_waitqueue_head(&hvt->outmsg_q);
  mutex_init(&hvt->lock);
+ init_completion(&hvt->release);
 
  spin_lock(&hvt_list_lock);
  list_add(&hvt->list, &hvt_list);
@@ -351,6 +353,8 @@ void hvutil_transport_destroy(struct hvutil_transport *hvt)
  if (hvt->cn_id.idx > 0 && hvt->cn_id.val > 0)
  cn_del_callback(&hvt->cn_id);
 
- if (mode_old != HVUTIL_TRANSPORT_CHARDEV)
- hvt_transport_free(hvt);
+ if (mode_old == HVUTIL_TRANSPORT_CHARDEV)
+ wait_for_completion(&hvt->release);
+
+ hvt_transport_free(hvt);
 }
diff --git a/drivers/hv/hv_utils_transport.h b/drivers/hv/hv_utils_transport.h
index d98f522..79afb62 100644
--- a/drivers/hv/hv_utils_transport.h
+++ b/drivers/hv/hv_utils_transport.h
@@ -41,6 +41,7 @@ struct hvutil_transport {
  int outmsg_len;                     /* its length */
  wait_queue_head_t outmsg_q;         /* poll/read wait queue */
  struct mutex lock;                  /* protects struct members */
+ struct completion release;          /* synchronize with fd release */
 };
 
 struct hvutil_transport *hvutil_transport_init(const char *name,
--
2.7.4


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK: [SRU][Yakkety][PATCH 0/1] Drivers: hv: util: move waiting for release to hv_utils_transport itself

brad.figg
In reply to this post by Joseph Salisbury-3
Reply | Threaded
Open this post in threaded view
|

ACK/cmnt: [SRU][Yakkety][PATCH 1/1] Drivers: hv: util: move waiting for release to hv_utils_transport itself

Stefan Bader-2
In reply to this post by Joseph Salisbury-3
Looks reasonable, though the breakage was (at least for Xenial) introduced by
patches which came via upstream stable. So I would personally maybe wait a
little to make efforts of getting this into the current cycle.

-Stefan


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team

signature.asc (836 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: ACK/cmnt: [SRU][Yakkety][PATCH 1/1] Drivers: hv: util: move waiting for release to hv_utils_transport itself

Joshua R. Poulson
We are pursuing getting the fixes into stable, but we missed a cycle.
We're trying not to miss the cycle for the kernel in proposed as well.

On Tue, Apr 18, 2017 at 2:05 AM, Stefan Bader
<[hidden email]> wrote:

> Looks reasonable, though the breakage was (at least for Xenial) introduced by
> patches which came via upstream stable. So I would personally maybe wait a
> little to make efforts of getting this into the current cycle.
>
> -Stefan
>
>
> --
> kernel-team mailing list
> [hidden email]
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
>

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

APPLIED: [SRU][Yakkety][PATCH 1/1] Drivers: hv: util: move waiting for release to hv_utils_transport itself

Stefan Bader-2
In reply to this post by Joseph Salisbury-3
Applied to Yakkety when re-spinning


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team

signature.asc (836 bytes) Download Attachment