Received: by 10.223.185.116 with SMTP id b49csp3875139wrg; Mon, 19 Feb 2018 07:25:20 -0800 (PST) X-Google-Smtp-Source: AH8x226jzJTXHjRoUnyLJVsRuF3ZcCLY5R6gLqdROrWfUbbvwucHJD5uR7BM1K52QMXFuKhhh8jD X-Received: by 10.98.36.25 with SMTP id r25mr1922847pfj.106.1519053920094; Mon, 19 Feb 2018 07:25:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519053920; cv=none; d=google.com; s=arc-20160816; b=EYJiQCLE8yEA+UMK934ToC/ozbUMILH0hsxCsgbDn2+RatMTcfeBv5QVVVvD8ursbZ wLsG0CZ8kvNjeFupdy9Qf3Cnt1IbwCsZBF0TCvkrsNCZNk58XZvEBC8VMjPvraaLktBt PsI2sk7oq9/0QvlEa/tyEyAZAZDclCiDjxdJbvfk8K6YR579m+YkX1PSaRD5UXAg8Fkt 0bEjEd7LZQkuKxNf831LlG89tIraSoByPval1o73yCi04EvCaTGLRZDGsRV3FqY4X2Gy kwXS7J+Si6+rFdUVVfQmaq17sblWdmXmsqJuAuvEeTakVExYhj3yljiMYpTVRhtj+1J5 G3ag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-transfer-encoding:content-disposition:mime-version :references:mail-followup-to:message-id:subject:cc:to:from:date :dkim-signature:arc-authentication-results; bh=EVOnp9/VjKoIIKJ8o0Q7vDedrCmLubSzrAWV78L/XHA=; b=u6ktKpM1kkz1Adr8hZnw9O1+ET9CIJVS8yo4aeT/XhvRbD/Xc0dLBmPNF+XXKhugGL 55fUEYlTO8oojiytwogUZ42pAzE1TGQZIQpfhdXydmTu5LtBs8tC2ZA+aTXkZeItcl9Z Z11S22Uy2dQ8lSyw0oyuYyqgzFjI3Wz94Ty7EN1jSyGZ9QQR9weTgM32Zrnch4571sZF f7Ls2E56aIMcmV+fh7mEfUrPeH4fH+y+lzKdsHEeQIe9oO3PwtQyvygt9AoMEG92iplg YKXlHEvgMoCzBGCYY4VmSOLoCdTVcqrp5A0fZv7vQ3QyVvVDYYhOE77ltlP5Er27OXn6 5EzQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@ffwll.ch header.s=google header.b=LUL7zVLV; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a23si4293739pff.83.2018.02.19.07.25.05; Mon, 19 Feb 2018 07:25:20 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@ffwll.ch header.s=google header.b=LUL7zVLV; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753063AbeBSPY2 (ORCPT + 99 others); Mon, 19 Feb 2018 10:24:28 -0500 Received: from mail-wm0-f65.google.com ([74.125.82.65]:38858 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752989AbeBSPYZ (ORCPT ); Mon, 19 Feb 2018 10:24:25 -0500 Received: by mail-wm0-f65.google.com with SMTP id z9so10480721wmb.3 for ; Mon, 19 Feb 2018 07:24:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=sender:date:from:to:cc:subject:message-id:mail-followup-to :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=EVOnp9/VjKoIIKJ8o0Q7vDedrCmLubSzrAWV78L/XHA=; b=LUL7zVLVG52low0YiV1g+Y90T3XwhQqteKqt9vonDs6OxZ7gzs0L8D7/JP13xhdIw7 gyOiwQpLAj4sGp6AwhKUWnwj0s+NHZKjRN3nQHu9tfU2k0KQ+GdeOrWZO5sg5Lv5fqO5 Kw4v9Yn56SZ9IeXxQfr1ZiDwAqoNDCf4LIMQo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=EVOnp9/VjKoIIKJ8o0Q7vDedrCmLubSzrAWV78L/XHA=; b=dBoHvIC+cFW/IPbG0g83OyHwHFTuY19MDS2ntTgULIVxvg88ByIEeH7gR9jNjVA+i3 VfRTHSgp+Ibe5qCw4TiueG2T+JXwG2Y1N5LG8Aq+zoC68GqOFRaY05ODjZMqd6JgKlu/ CFAo5CuT+kXCMzxQAPIeTTvqRy7F+3tqnKc3kXkBRtq9F/2LSbQx//SCyWMgcQV3S/J6 8ofmaXl16zjHi0f7540ysCNBSsj+mLKhpnZk5wO/WjCX3f/D6mV4ko0I5dcQcr5c0piK X5SPxomgm938pWd2NVoWzr9VDTFz61y61S77+ypG+T+VAuOC9OAsTpLq8/zjS859NIG5 j8WQ== X-Gm-Message-State: APf1xPCbXRqe6YPgpxhy0NCXbrOwfAxnyuAIs9BIH/CP38f0uAcxoJ8o 4bdEbveNapRNNtf2X9oWkbkLDmK0 X-Received: by 10.80.136.37 with SMTP id b34mr12814334edb.252.1519053863916; Mon, 19 Feb 2018 07:24:23 -0800 (PST) Received: from phenom.ffwll.local (212-51-149-109.fiber7.init7.net. [212.51.149.109]) by smtp.gmail.com with ESMTPSA id f2sm12905015edm.9.2018.02.19.07.24.22 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 19 Feb 2018 07:24:23 -0800 (PST) Date: Mon, 19 Feb 2018 16:24:21 +0100 From: Daniel Vetter To: Christian =?iso-8859-1?Q?K=F6nig?= Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/3] locking/ww_mutex: cleanup lock->ctx usage in amdgpu Message-ID: <20180219152421.GQ22199@phenom.ffwll.local> Mail-Followup-To: Christian =?iso-8859-1?Q?K=F6nig?= , dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org References: <20180215141944.4332-1-christian.koenig@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20180215141944.4332-1-christian.koenig@amd.com> X-Operating-System: Linux phenom 4.14.0-3-amd64 User-Agent: Mutt/1.9.3 (2018-01-21) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Feb 15, 2018 at 03:19:42PM +0100, Christian K?nig wrote: > amdgpu needs to verify if userspace sends us valid addresses and the simplest > way of doing this is to check if the buffer object is locked with the ticket > of the current submission. > > Clean up the access to the ww_mutex internals by providing a function > for this and extend the check to the thread owning the underlying mutex. > > Signed-off-by: Christian K?nig > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 3 ++- > include/linux/ww_mutex.h | 17 +++++++++++++++++ > 2 files changed, 19 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > index eaa3cb0c3ad1..4c04b560e358 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > @@ -1594,7 +1594,8 @@ int amdgpu_cs_find_mapping(struct amdgpu_cs_parser *parser, > *map = mapping; > > /* Double check that the BO is reserved by this CS */ > - if (READ_ONCE((*bo)->tbo.resv->lock.ctx) != &parser->ticket) > + if (!ww_mutex_is_owned_by(&(*bo)->tbo.resv->lock, current, > + &parser->ticket)) > return -EINVAL; > > if (!((*bo)->flags & AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS)) { > diff --git a/include/linux/ww_mutex.h b/include/linux/ww_mutex.h > index 39fda195bf78..dd580db289e8 100644 > --- a/include/linux/ww_mutex.h > +++ b/include/linux/ww_mutex.h > @@ -358,4 +358,21 @@ static inline bool ww_mutex_is_locked(struct ww_mutex *lock) > return mutex_is_locked(&lock->base); > } > > +/** > + * ww_mutex_is_owned_by - is the w/w mutex locked by this task in that context > + * @lock: the mutex to be queried > + * @task: the task structure to check > + * @ctx: the w/w acquire context to test > + * > + * Returns true if the mutex is locked in the context by the given task, false > + * otherwise. > + */ > +static inline bool ww_mutex_is_owned_by(struct ww_mutex *lock, > + struct task_struct *task, > + struct ww_acquire_ctx *ctx) > +{ > + return likely(__mutex_owner(&lock->base) == task) && > + READ_ONCE(lock->ctx) == ctx; Just comparing the context should be good enough. If you ever pass a ww_acquire_ctx which does not belong to your own thread your seriously wreaking things much worse already (and if we do catch that, should probably lock the ctx to a given task when ww-mutex debugging is enabled). That also simplifies the function signature. Of course that means if you don't have a ctx, you can't test ownership of a ww_mute, but I think that's not a really valid use-case. And not needed for cmd submission, where you need the ctx anyway. Besides this interface nit looks all good. With the task check¶meter removed: Reviewed-by: Daniel Vetter -Daniel > +} > + > #endif > -- > 2.14.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch