Received: by 2002:a17:90a:1609:0:0:0:0 with SMTP id n9csp833121pja; Wed, 1 Apr 2020 09:31:46 -0700 (PDT) X-Google-Smtp-Source: ADFU+vswvNnccidstyt1umhcVsv+Y1Hw6NJoSVZ+5LH37e6WGWtvf/zuAvShooMYgPSYlWSYonXd X-Received: by 2002:a4a:d258:: with SMTP id e24mr17639584oos.93.1585758705912; Wed, 01 Apr 2020 09:31:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585758705; cv=none; d=google.com; s=arc-20160816; b=h1ILpJ1VLBUiBbq8BxD4ZYOVow42/p5rq+Z+26sMX2M3iKu+0BoFuffoafUjqDBd0I JOAuAIxY5S9WolK8vlJyDQwRm4kw1YPVNpqtPKuok1TrdN2iiwu9e6wXYDXWLuZWbrWR c+zOTK5laDKruD3hgOkwF57sZc/IsVbrGs7/+AZ5P7OvVdJi7Bi4sutW2X2GKWomUUmg Yws+RB5iOF7qfw++XUvwLE3byMaGYR8fDIpQEkz99EwiaIuL4i8oxkhKZAqBrRKulI2P o7No31sXIo+dVB83KnYumCNPxolpoMUWqKA/IpvUstUUd2UEfHpadn1yFmMpA44i2Oml 4rlA== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=RWsKdyAepzXt7pHUFJ9WJqsFwFg31k/amuYdCaskdPc=; b=dEsmFteNBAk1I6bsZWzue+gUk1zooJpP0YtYMQ3l9gECGclWutfK1ZcqWCHI5Tm9iZ OQzQwF0OGuFH6hQ9ovm3JdTb3ulpzOiPwCFYvDa04Dyun4gyIRkLaxck7KrUDokNoBnu SFYjCx/5ZFJyVUiBweqxD/nVruT1azMRA8B5fgSAZa+d8tCGEoNVW+wYmegVw9lBd20F v23m1eeKJDWFT6m5Vj1h2xZTC/T4m1GHUXUS0+sx1mCBKDxdxkdvK3Oa40KGYR0Ub2sz FolUYt4BReqRfs/hoxwXRQncgNttF4qa/kS/1kPCZ4A2/DBlvCjEcyOyBot+zEPUg/Cx rr2Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ecvlQEl3; 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 x136si1094486oif.122.2020.04.01.09.31.33; Wed, 01 Apr 2020 09:31:45 -0700 (PDT) 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=@kernel.org header.s=default header.b=ecvlQEl3; 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 S2387563AbgDAQai (ORCPT + 99 others); Wed, 1 Apr 2020 12:30:38 -0400 Received: from mail.kernel.org ([198.145.29.99]:56580 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387517AbgDAQag (ORCPT ); Wed, 1 Apr 2020 12:30:36 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 51DDB21D79; Wed, 1 Apr 2020 16:30:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1585758634; bh=kkiZxSWSvTmep1CrIhlSNygi64GZbcmWRh4jqTD3b3Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ecvlQEl3nJvuKJ6CNJyizKmRyWSl5uuePBHjBMG29iSvvO4taIrDh0nb5wqNpOnhH c9z0cNlOihTSFSUZvpM4fvMtZvuG7Y6fqRzVApMS42dhbRSZvx9UwABdx9IAX1tK31 AUsNbc1DlTN2c9vBT0zYvGqWVoPTHls9cyzUQS2U= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Rong Chen , Thomas Gleixner , Linus Torvalds Subject: [PATCH 4.4 30/91] futex: Unbreak futex hashing Date: Wed, 1 Apr 2020 18:17:26 +0200 Message-Id: <20200401161523.559502813@linuxfoundation.org> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200401161512.917494101@linuxfoundation.org> References: <20200401161512.917494101@linuxfoundation.org> User-Agent: quilt/0.66 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 From: Thomas Gleixner commit 8d67743653dce5a0e7aa500fcccb237cde7ad88e upstream. The recent futex inode life time fix changed the ordering of the futex key union struct members, but forgot to adjust the hash function accordingly, As a result the hashing omits the leading 64bit and even hashes beyond the futex key causing a bad hash distribution which led to a ~100% performance regression. Hand in the futex key pointer instead of a random struct member and make the size calculation based of the struct offset. Fixes: 8019ad13ef7f ("futex: Fix inode life-time issue") Reported-by: Rong Chen Decoded-by: Linus Torvalds Signed-off-by: Thomas Gleixner Tested-by: Rong Chen Link: https://lkml.kernel.org/r/87h7yy90ve.fsf@nanos.tec.linutronix.de Signed-off-by: Greg Kroah-Hartman --- kernel/futex.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/kernel/futex.c +++ b/kernel/futex.c @@ -378,9 +378,9 @@ static inline int hb_waiters_pending(str */ static struct futex_hash_bucket *hash_futex(union futex_key *key) { - u32 hash = jhash2((u32*)&key->both.word, - (sizeof(key->both.word)+sizeof(key->both.ptr))/4, + u32 hash = jhash2((u32 *)key, offsetof(typeof(*key), both.offset) / 4, key->both.offset); + return &futex_queues[hash & (futex_hashsize - 1)]; }