lkml.org 
[lkml]   [2020]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.6 179/606] driver core: Fix handling of SYNC_STATE_ONLY + STATELESS device links
    Date
    From: Saravana Kannan <saravanak@google.com>

    commit 44e960490ddf868fc9135151c4a658936e771dc2 upstream.

    Commit 21c27f06587d ("driver core: Fix SYNC_STATE_ONLY device link
    implementation") didn't completely fix STATELESS + SYNC_STATE_ONLY
    handling.

    What looks like an optimization in that commit is actually a bug that
    causes an if condition to always take the else path. This prevents
    reordering of devices in the dpm_list when a DL_FLAG_STATELESS device
    link is create on top of an existing DL_FLAG_SYNC_STATE_ONLY device
    link.

    Fixes: 21c27f06587d ("driver core: Fix SYNC_STATE_ONLY device link implementation")
    Signed-off-by: Saravana Kannan <saravanak@google.com>
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Link: https://lore.kernel.org/r/20200520043626.181820-1-saravanak@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/base/core.c | 8 +++++---
    1 file changed, 5 insertions(+), 3 deletions(-)

    diff --git a/drivers/base/core.c b/drivers/base/core.c
    index 7fb7ffdeb015..68277687c160 100644
    --- a/drivers/base/core.c
    +++ b/drivers/base/core.c
    @@ -360,12 +360,14 @@ struct device_link *device_link_add(struct device *consumer,

    if (flags & DL_FLAG_STATELESS) {
    kref_get(&link->kref);
    - link->flags |= DL_FLAG_STATELESS;
    if (link->flags & DL_FLAG_SYNC_STATE_ONLY &&
    - !(link->flags & DL_FLAG_STATELESS))
    + !(link->flags & DL_FLAG_STATELESS)) {
    + link->flags |= DL_FLAG_STATELESS;
    goto reorder;
    - else
    + } else {
    + link->flags |= DL_FLAG_STATELESS;
    goto out;
    + }
    }

    /*
    --
    2.25.1
    \
     
     \ /
      Last update: 2020-06-09 01:20    [W:2.172 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site