lkml.org 
[lkml]   [2007]   [Nov]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 4/9] IB/uverbs: Fix checking of userspace object ownership
    2.6.22-stable review patch.  If anyone has any objections, please let us
    know.

    ------------------
    From: Roland Dreier <rolandd@cisco.com>

    Upstream as cbfb50e6e2e9c580848c0f51d37c24cdfb1cb704

    Commit 9ead190b ("IB/uverbs: Don't serialize with ib_uverbs_idr_mutex")
    rewrote how userspace objects are looked up in the uverbs module's
    idrs, and introduced a severe bug in the process: there is no checking
    that an operation is being performed by the right process any more.
    Fix this by adding the missing check of uobj->context in __idr_get_uobj().

    Apparently everyone is being very careful to only touch their own
    objects, because this bug was introduced in June 2006 in 2.6.18, and
    has gone undetected until now.

    Signed-off-by: Roland Dreier <rolandd@cisco.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/infiniband/core/uverbs_cmd.c | 8 ++++++--
    1 file changed, 6 insertions(+), 2 deletions(-)

    --- a/drivers/infiniband/core/uverbs_cmd.c
    +++ b/drivers/infiniband/core/uverbs_cmd.c
    @@ -147,8 +147,12 @@ static struct ib_uobject *__idr_get_uobj

    spin_lock(&ib_uverbs_idr_lock);
    uobj = idr_find(idr, id);
    - if (uobj)
    - kref_get(&uobj->ref);
    + if (uobj) {
    + if (uobj->context == context)
    + kref_get(&uobj->ref);
    + else
    + uobj = NULL;
    + }
    spin_unlock(&ib_uverbs_idr_lock);

    return uobj;
    --
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-11-02 18:57    [W:2.836 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site