Received: by 10.223.164.202 with SMTP id h10csp919995wrb; Wed, 15 Nov 2017 10:02:19 -0800 (PST) X-Google-Smtp-Source: AGs4zMZMmTpYfTCvktamkTIuFA1KIn7IDi2h9R6qkXZBCXaziTLqfWC6Hyp6kMpCRc7sYCqyc+GN X-Received: by 10.98.13.8 with SMTP id v8mr18669125pfi.180.1510768939575; Wed, 15 Nov 2017 10:02:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510768939; cv=none; d=google.com; s=arc-20160816; b=LG/Qhm098YrYqVBzo1Ayb+Sx9zwIXjBetV1cBvJREhxaVnyO6Un52Ixn/+jLVCfu1C esD7qONfiNorLWtAxOKBGxlr5Dvo5fByKTwL9Im30zsspNDvHSI2+8PmbCqQyKxbD0VV gVuLCyPaf7wNUwWWSIA2tjieZTcwvoV5lM0Uhr6MGL5iG4xEwHb5qSuj68oUV1wg0n+7 YkV/RDGzltdlK/YdIXIe982HEZkyuHawQ9rF2Ikw5N71PI6xd6mGyLA/YyOr6GPU/nYC D9L6ba6w2HlmSLUdUEkAd3BuXXlH2IbNBb+EvQOZTG0Yjhrkn974re5ywyUyXtbmXLj3 +Z+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=OEJaAuPVSmbJJdynAVqK/RDIdlTGDqcwQLIQBRc6Lgo=; b=RtYLsxyPA5sNDG8F+8BXdOd/dagxRRm5k4lJrDRw0Y3j/35dnh9Nun6h1sjlt7ocXO yJ6I/Fm/QWPeY9Gcmnf5gKSnD/f/p43DCZW1yglmbdyajszZXYniSFCJMzAyFWz3Rvyi Vv4p7ui64gEa6tCKKv1l03UHN+LMpGP/KrHsrzHbUHAMImeyJI95q+ovSGrxaE/gztyZ hcMLlV3bUT8uWxKvdMXsGaegr7LZYE6acidqnW5y4SVld2K8tf/iIRcczO8OjgritZDA cvgnrXcGe3hIE72b+LoNQVSONj5T3xQuOXhBrGDpMB5JuJQiXFDdVUj50VhpdG4bR5+g 8DNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=ZFJWGPNf; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a8si18254531ple.684.2017.11.15.10.02.07; Wed, 15 Nov 2017 10:02:19 -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=@google.com header.s=20161025 header.b=ZFJWGPNf; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932593AbdKORfA (ORCPT + 90 others); Wed, 15 Nov 2017 12:35:00 -0500 Received: from mail-wm0-f66.google.com ([74.125.82.66]:35643 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932451AbdKORex (ORCPT ); Wed, 15 Nov 2017 12:34:53 -0500 Received: by mail-wm0-f66.google.com with SMTP id y80so4537066wmd.0 for ; Wed, 15 Nov 2017 09:34:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=OEJaAuPVSmbJJdynAVqK/RDIdlTGDqcwQLIQBRc6Lgo=; b=ZFJWGPNfBhTf1NjWUnydAJfExM1YHvcfNQufvZkEi1JFyIVwKhwttOTho1ojNR0P25 /wOzt069bv66qsZaxD9autWrrAblhX6IbIl53oDEYytnt3wqD1KtAH1V/Vopf4EOjbUb fH+FlzJqd3Pqb0O7T5HD6B2K/7A7NeHn0ZxGER0lYF46PS4wUlRmgYdN052R+p+27In4 rmcOFCsL31qimoDeztxlXIgj+cqOPKE31di9y2m9mf8xC4Wkc39LVd3RZFSvDgPRefi9 Nc4fjaBn2zr/k6dlV5qQBgwQF79eerfWBJLe7B0QP70kiuqoC6WgyakRn9oCL8enomFU PSgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=OEJaAuPVSmbJJdynAVqK/RDIdlTGDqcwQLIQBRc6Lgo=; b=TbLByDtbJh2+l9ofUJVvjprw5NQ7P6OFAmi0kInTPAVx+GMOZN8O/UqIDZP219aaRJ x0Ppi8b1yw/uWv8kxLlFJVQQ1WeFpys1/CRw0+d2fQ96evlNqhUMdRsKbQbcl09eT6Fe HfUKXOOv53lDLczZN6XFO/UcW1Raj9tHAYXfg0RMzlQu5WMrKMI3EilEhagMe1bel3RO YQq+GUMeWGxVHoaeIbZFCpXvH41hKWBJPQhGlL6ULHVL7dLbLaN1Lmv/babTy2mXGJ98 CXD1qJKqTS5/DRrXdGCcJPTx2RDApT0/nFmCF81nhZKa0Qd2gwNJcz9hVcpiqdz2S7sa eSqg== X-Gm-Message-State: AJaThX7fBReoLrvu9peP6HyDJlJNB/wg0eHxZOqsmY5W+qxz5GtQaQuR nu/u4cGpNEf4DwEYtzH5R2r5ew== X-Received: by 10.28.226.214 with SMTP id z205mr2315027wmg.149.1510767291356; Wed, 15 Nov 2017 09:34:51 -0800 (PST) Received: from glider0.muc.corp.google.com ([100.105.28.21]) by smtp.gmail.com with ESMTPSA id y48sm25567747wrb.41.2017.11.15.09.34.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 15 Nov 2017 09:34:50 -0800 (PST) From: Alexander Potapenko To: aryabinin@virtuozzo.com, dvyukov@google.com, akpm@linux-foundation.org Cc: kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH] lib/stackdepot: use a non-instrumented version of memcmp() Date: Wed, 15 Nov 2017 18:34:45 +0100 Message-Id: <20171115173445.37236-1-glider@google.com> X-Mailer: git-send-email 2.15.0.448.gf294e3d99a-goog Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org stackdepot used to call memcmp(), which compiler tools normally instrument, therefore every lookup used to unnecessarily call instrumented code. This is somewhat ok in the case of KASAN, but under KMSAN a lot of time was spent in the instrumentation. Signed-off-by: Alexander Potapenko --- lib/stackdepot.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/lib/stackdepot.c b/lib/stackdepot.c index f87d138e9672..d372101e8dc2 100644 --- a/lib/stackdepot.c +++ b/lib/stackdepot.c @@ -163,6 +163,23 @@ static inline u32 hash_stack(unsigned long *entries, unsigned int size) STACK_HASH_SEED); } +/* Use our own, non-instrumented version of memcmp(). + * + * We actually don't care about the order, just the equality. + */ +static inline +int stackdepot_memcmp(const void *s1, const void *s2, unsigned int n) +{ + unsigned long *u1 = (unsigned long *)s1; + unsigned long *u2 = (unsigned long *)s2; + + for ( ; n-- ; u1++, u2++) { + if (*u1 != *u2) + return 1; + } + return 0; +} + /* Find a stack that is equal to the one stored in entries in the hash */ static inline struct stack_record *find_stack(struct stack_record *bucket, unsigned long *entries, int size, @@ -173,10 +190,8 @@ static inline struct stack_record *find_stack(struct stack_record *bucket, for (found = bucket; found; found = found->next) { if (found->hash == hash && found->size == size && - !memcmp(entries, found->entries, - size * sizeof(unsigned long))) { + !stackdepot_memcmp(entries, found->entries, size)) return found; - } } return NULL; } -- 2.15.0.448.gf294e3d99a-goog From 1584234057708815426@xxx Thu Nov 16 14:42:12 +0000 2017 X-GM-THRID: 1584234057708815426 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread