Received: by 10.223.185.116 with SMTP id b49csp719654wrg; Tue, 20 Feb 2018 06:50:50 -0800 (PST) X-Google-Smtp-Source: AH8x226pF/yjMD3qA1Bvy9wlJzyQvCWbVNtBww+5TtJSaFHJJhuhpyeqxPvtpVbFKfe6I1PEkRFj X-Received: by 10.101.64.10 with SMTP id f10mr3158288pgp.171.1519138250176; Tue, 20 Feb 2018 06:50:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519138250; cv=none; d=google.com; s=arc-20160816; b=ROFoWU0kz9bNMn/zdSjaSKwY/K7oBsDFOEzVbueBR1xRh8bS/vP1+KWhhidHyNsQe9 89/x/y4htYhm4OF7PSSFRl2kMhtbOVcmXeg+rv3mRoUFC0P/Oh3a0dwCZSBQfEGLYF15 MufcYPu+3oZ5ha8e0l8I2HT/MmT5HAPZXM932+/7olB/RF25PLXZ8VeXqvKrCEn5aRiu 1wBx7L+kCuGLD1UvUn8M9a8VfnVNZA3+CZCEbx9408wp73yRl81SgZY/W/RWNtczgj5j he7d0CbQDckqMhrDx+0dw6NAZY83mUw387qdVE9pXRrmNcQ31KxCclYIPEudk6BktIZL uD9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:to:from:dkim-signature :arc-authentication-results; bh=rAJuejiWasqwqIRiJBhqDR/cT58g2fYMlrVgdfC+UgY=; b=zpVqDpKVTHu5dk0NIiOM51X3pb6UySOtfIrrwZHUTpC6KEAJNM6s7EdzB92iNpxYtK b9H4ipSEgrMK9tWvwyrieCeg64updDpx477i1+5ZjYgz4yLmaPYekHDjdr0iGTRfJ2fm R8ymA+r4rHxzN0hOWlDkxvTOJzxfTJkaapuW1aAtqhO7emqnyCwLv0hzNCIrWtuHI+q5 c+bwWQr5LJIxjyjPIxwq1h8idDKPoWM2DCdcoUSzZ54IOM7kPssNxz5RK84CRtQRcUaN kP81RKGeVi+TltOLsVkK2YN0ugm2SeD3DBIn3C1QDHnPjCn/nt4bVKSLoggG08H0fclH ri4Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=kOkCUXvD; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q3si1236774pgp.632.2018.02.20.06.50.35; Tue, 20 Feb 2018 06:50:50 -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=pass header.i=@gmail.com header.s=20161025 header.b=kOkCUXvD; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752038AbeBTOtu (ORCPT + 99 others); Tue, 20 Feb 2018 09:49:50 -0500 Received: from mail-wr0-f196.google.com ([209.85.128.196]:34942 "EHLO mail-wr0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751379AbeBTOts (ORCPT ); Tue, 20 Feb 2018 09:49:48 -0500 Received: by mail-wr0-f196.google.com with SMTP id l43so15155826wrc.2 for ; Tue, 20 Feb 2018 06:49:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=rAJuejiWasqwqIRiJBhqDR/cT58g2fYMlrVgdfC+UgY=; b=kOkCUXvD+wQQ8NYd6p93hPjTvJ6BCbnIlcLpuP1stj1se4BW17oLN9IiHG7m0pAS7a dHB/piawFBScbErg5GvqAcpNwpUzv9AJ3KoRIWx99HUZDWnJ/isv1lK/FC/p3apoLBwg 5vK2UJyfZki9x2UfKznLP3ihgwLGGF7odR0RKSuEz3N6+ykkHoUVf/KtmjL8Yb5EQ0Bn 8aMyyosa8c1Vqu+f0l9R8XFmoK8ArkPTKQJI4fwdf+O3RWAVbP/6J7vb3U6L14nGljAJ xYEeGjW7/8eVlio3daXpSLVSXGtHKrsGscQOL5tIsgPuDkpQwxjKtWNZ8Gck4aTSEeP1 yWXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=rAJuejiWasqwqIRiJBhqDR/cT58g2fYMlrVgdfC+UgY=; b=T+2nVkApv+JqFV4rNmYVge9Ohtm/NmZpCwx9tMecZ2I9toBHO4cnHPevgEJgFb2aNL dB28X3ijqn1KnlAVDPa0S1y/pG/cu95xYS0YLkK846fjwO+hyOHStVt3d8U0laWjE7P2 Wl1/CH/UH/GK/wKe85NZNYlK2Rc5eOsTlQbcIc4K1iQtNI1xiZs6365mz/EyHG26W2WO H1N4ByFdkDyruRcLTwMt1xTYg4nwYSISWAow7APKbC7rwuHI5ScPF9ZsXAE08prIB4ND QABtQ46R4JnEu4ms6hY5wJ0v5D6GOAe5uqjpKN1/epShHnTJ4C+3dZtx/xcs/bSEjy5E Uuwg== X-Gm-Message-State: APf1xPD2lyZ/QRhiOJZnyznH7iSUabOk0Yc2DKWdYerHUR9cEdafzSgS kcBtjiJGXp69UjPneOOxda8= X-Received: by 10.223.172.167 with SMTP id o36mr4257259wrc.34.1519138187648; Tue, 20 Feb 2018 06:49:47 -0800 (PST) Received: from baker.fritz.box ([2a02:908:1251:8fc0:ed7f:cda1:8dc7:d450]) by smtp.gmail.com with ESMTPSA id l199sm9336883wmd.18.2018.02.20.06.49.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 20 Feb 2018 06:49:47 -0800 (PST) From: "=?UTF-8?q?Christian=20K=C3=B6nig?=" X-Google-Original-From: =?UTF-8?q?Christian=20K=C3=B6nig?= To: peterz@infradead.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH] locking/ww_mutex: add ww_mutex_is_owned_by function v4 Date: Tue, 20 Feb 2018 15:49:46 +0100 Message-Id: <20180220144946.2510-1-christian.koenig@amd.com> X-Mailer: git-send-email 2.14.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. v2: split amdgpu changes into separate patch as suggested by Alex v3: change logic as suggested by Daniel v4: fix test in case ctx is NULL Signed-off-by: Christian König --- include/linux/ww_mutex.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/include/linux/ww_mutex.h b/include/linux/ww_mutex.h index 39fda195bf78..fea4acc0bcbc 100644 --- a/include/linux/ww_mutex.h +++ b/include/linux/ww_mutex.h @@ -358,4 +358,23 @@ 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 + * @ctx: the w/w acquire context to test + * + * If @ctx is not NULL test if the mutex is owned by this context. + * If @ctx is NULL test if the mutex is owned by the current thread and not + * locked in any context. + */ +static inline bool ww_mutex_is_owned_by(struct ww_mutex *lock, + struct ww_acquire_ctx *ctx) +{ + if (ctx) + return likely(READ_ONCE(lock->ctx) == ctx); + + return likely(__mutex_owner(&lock->base) == current) && + likely(READ_ONCE(lock->ctx) == NULL; +} + #endif -- 2.14.1