Received: by 10.223.164.202 with SMTP id h10csp1176479wrb; Fri, 17 Nov 2017 15:30:49 -0800 (PST) X-Google-Smtp-Source: AGs4zMa+xIqbDCqIEsONbjkA83FzVs4sJvr5iVC4WoVY8uQEvCxY4Aj+KFCd2jq5IUEefzS9AA/F X-Received: by 10.98.64.6 with SMTP id n6mr3652474pfa.129.1510961449258; Fri, 17 Nov 2017 15:30:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510961449; cv=none; d=google.com; s=arc-20160816; b=GhndFqMTAMOSu52QBBx7FhhHkmT17mS6+FpshYGqLYq1QAqZW1x/bJos5rAkCjWf1R N6ci0pjdaAi8F5PoxiSaaK5Tcf6RceZ1kcF0/jk/TLa2qHqQVTJsli9zql8e0oQL4h1L JNsn/3mVXGjqsMatG2Nvv/b6lK/XAQnvAM/BQ4KzXBZCVyObT8dcyAkozQuioSdCfbsn ZMEqNWMMEnH9MmLNim2Lv2w/tRSb0gyynap8ySgeWl8rNUOGZTM2q/LHxks+D5t1DODh +gA8Mha4bCObH0CfNdT8C0WY5Xl0KPk8QPYSzYjP8I8DeujwZQCCkLkz1P+3NYjj1Hvs J9gQ== 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=HRDVXZdQHj6CPsGE5yzPBvn19MrZJ5XsWXBDYxodJOQ=; b=Vk1VrdWwLg9hY6BvzmquxD0dDKIQkMStOq9PuC/UeOlOGGhEOd4bYa++9Ej+8MIFS7 E5HfyXJkJ5oKZybWnmvmC7As+i9dHmLf0FjDv3Yd13VbByfhsO6PwXN3AMEI8EgF8Pp8 pJH8rKNTSFsaoD9x7zY1s/rIvCpn+QTPnb9phfA6wfyhwNJG54ejZ5/hcpwlzQrXWEnV uLiT2ghslXUhQgNykjYNyhRZ50kQk1oWli3YRJK8kT7GKceKHq01LlN8d1Qmk+YcLixE N/MSuZofFwgBue/nc4IUNNQRho+mf+lpm6bhaH7hmKgltrgKStbvPI0NWqg0JasJqyVr /cIQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=SsOG2HLc; 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 q8si3855125pfa.310.2017.11.17.15.30.36; Fri, 17 Nov 2017 15:30:49 -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=SsOG2HLc; 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 S1759897AbdKQR01 (ORCPT + 93 others); Fri, 17 Nov 2017 12:26:27 -0500 Received: from mail-wm0-f68.google.com ([74.125.82.68]:41491 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752508AbdKQR0U (ORCPT ); Fri, 17 Nov 2017 12:26:20 -0500 Received: by mail-wm0-f68.google.com with SMTP id b189so7929437wmd.0 for ; Fri, 17 Nov 2017 09:26:19 -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=HRDVXZdQHj6CPsGE5yzPBvn19MrZJ5XsWXBDYxodJOQ=; b=SsOG2HLcidcRe7VLs90U4bdl6Zk7tAIc2NCnXtW9roSbOMP+om9Ic1QasEIAViZuOT 3PU8DHuLB5lmABKp6NJ7TuWwmTDxcgwxmd1uNBFbwNCWMwykSdqsz+avbAu/p1OrGBNF +fi+uILF9+bLG38qsa8a7uZSeTlFXI8PUYXhK6N9MOxQtgufwH4B0+Qd4Lus5QWanhRt k56359DLsLFw258FFMhEz6rKJi66VyNrXmj5znIeQbY6fKtxBpORIR0n0msek7yRbsGH ro/ZuboGMDKDL6AzOz20uT4EGU3ry+G5hOb0hIx5nOMg9a3JKa9GdKCyAFq2uDRut7uX GjNw== 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=HRDVXZdQHj6CPsGE5yzPBvn19MrZJ5XsWXBDYxodJOQ=; b=U11jS8//ezGzLFpjQoQxSTmwXQ3FvEvurUmqvIHMudZiM+q1dvIYDcbIBkfQurMwTX uGjeE7OUXbCo6Q9CzOCVam0Lqjg71nwO1ft+yyyLRqZv6qBJ8WoUyU2RADVyVPMgenVa FPNvBXX0OJ9kBbqhQK5Sipzx45iRIQh1BRJdzUKgRATe8zAeRWTMv+Xc7ROOu/IfngSy nlU6XgHPE0lFEN+90ejuja5G2b9LnX391EpTXKMCZNvAy+XdvFd7npd7C1NycNS3zEV2 O5x7+aEFVUDN12Ocr34rVdI2NZL/co6AOHPL5YhQcMZyUjrUT0/9Ody05lv2i38yCWP+ A+LQ== X-Gm-Message-State: AJaThX4Y9NCM4LBeIPABoWJtO6eSViZF09QBfctAXoCia9R7cPpR2LFe Fham5SEF6wJRGu/HlSpmxDDJdQ== X-Received: by 10.28.151.14 with SMTP id z14mr5210394wmd.5.1510939578813; Fri, 17 Nov 2017 09:26:18 -0800 (PST) Received: from glider0.muc.corp.google.com ([100.105.28.21]) by smtp.gmail.com with ESMTPSA id a71sm3268283wme.33.2017.11.17.09.26.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 17 Nov 2017 09:26:17 -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 v2] lib/stackdepot: use a non-instrumented version of memcmp() Date: Fri, 17 Nov 2017 18:21:49 +0100 Message-Id: <20171117172149.69562-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 --- v2: As requested by Andrey Ryabinin, made the parameters unsigned long * --- lib/stackdepot.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/stackdepot.c b/lib/stackdepot.c index f87d138e9672..e513459a5601 100644 --- a/lib/stackdepot.c +++ b/lib/stackdepot.c @@ -163,6 +163,21 @@ 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 unsigned long *u1, const unsigned long *u2, + unsigned int n) +{ + 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 +188,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 1584103788334359462@xxx Wed Nov 15 04:11:37 +0000 2017 X-GM-THRID: 1584103788334359462 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread