Received: by 2002:a05:6358:1087:b0:cb:c9d3:cd90 with SMTP id j7csp2694728rwi; Fri, 21 Oct 2022 06:58:22 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7bvIxqcdpG4x6oOx9LWz/ZGYVybHO6ifrP6VUQXoDzVrGJUWFJ8O/TtK41FpivP9vskSwU X-Received: by 2002:a05:6402:d58:b0:458:5eca:a2c9 with SMTP id ec24-20020a0564020d5800b004585ecaa2c9mr17765923edb.306.1666360702588; Fri, 21 Oct 2022 06:58:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666360702; cv=none; d=google.com; s=arc-20160816; b=CZ7sNbHEdWfFAQVDR7MA45NYRRtF/ew5fUCJUtaj8HguWHr4Js8Sy8oZBRY6P8lx90 LXoLGy5MkyVezcUjsvs2PkiexGwoDz/FyZ3VgjhFLD30tKBK4sA8hy98nXRx1KbsTNuX JB/5KA8CuQtzhGDCZyZmC5hTeExs0kBE9MVWgPSDjr4UHFRl+vwfv1jFeaAs5caB62SM hjcrsn/VSbLHo1T8xEtMVIn39881RgArpin93uKzEZp3zkK5uCxCmHiuGQDUUEoF4asi pc/qymbVAXmaoFHrl/J5eAlzc74nONVMH7KdQvr3Eadal2rIAe8vkcsR4rblW0VySXfl Vlnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=/KYOY4zs6fl6G+lRfUOjsIwjdNNZQUClN8FktPDpRMQ=; b=gpd5O5i1su3hlKYTIoIG0ipiiAXYKKPGV5jsAsSzrRUFgh3rNrFJ48mueZijBuKzgL DSSp92rsseM9/qmXXI4aDw3qXfS8qFNK2zOAcGeip2gOB0HItTPrTVMmbZOBxd0snkg1 HO9On+5zDew8+TDGTrNpIQLQH5fLdGhMLmJsaxDxzRpyPrIKyIbz0vNXar8nRPE0/5pz Sn1An5lFfbcBvwCKGiMaNk6mNQGoCw+E6RIPRLi2O2kLOuRcw8I4QXym2bIl9DXNFCTd NphsmG+s2GTCke5eE6ICOaiM0KsVbFRCEaLDx0JdG0fWMO1Be4nagC0DM+tg3DKzjjTs 68Mg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ji19-20020a170907981300b007823d2b20fdsi20501469ejc.219.2022.10.21.06.57.56; Fri, 21 Oct 2022 06:58:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231214AbiJUNrI (ORCPT + 99 others); Fri, 21 Oct 2022 09:47:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40648 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230116AbiJUNrH (ORCPT ); Fri, 21 Oct 2022 09:47:07 -0400 Received: from mail.sf-mail.de (mail.sf-mail.de [IPv6:2a01:4f8:1c17:6fae:616d:6c69:616d:6c69]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5577425C486 for ; Fri, 21 Oct 2022 06:47:05 -0700 (PDT) Received: (qmail 18710 invoked from network); 21 Oct 2022 13:46:14 -0000 Received: from p200300cf07087500581cdcfffecf391f.dip0.t-ipconnect.de ([2003:cf:708:7500:581c:dcff:fecf:391f]:35114 HELO eto.sf-tec.de) (auth=eike@sf-mail.de) by mail.sf-mail.de (Qsmtpd 0.38dev) with (TLS_AES_256_GCM_SHA384 encrypted) ESMTPSA for ; Fri, 21 Oct 2022 15:46:14 +0200 From: Rolf Eike Beer To: Thomas Graf , Herbert Xu , Florian Westphal Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, "Jason A. Donenfeld" Subject: [PATCH][Resend] rhashtable: make test actually random Date: Fri, 21 Oct 2022 15:47:03 +0200 Message-ID: <5894765.lOV4Wx5bFT@eto.sf-tec.de> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_PASS, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The "random rhlist add/delete operations" actually wasn't very random, as all cases tested the same bit. Since the later parts of this loop depend on the first case execute this unconditionally, and then test on different bits for the remaining tests. While at it only request as much random bits as are actually used. Signed-off-by: Rolf Eike Beer --- lib/test_rhashtable.c | 58 ++++++++++++++++--------------------------- 1 file changed, 22 insertions(+), 36 deletions(-) [Resend with correct from address] diff --git a/lib/test_rhashtable.c b/lib/test_rhashtable.c index b358a74ed7ed..f2ba5787055a 100644 --- a/lib/test_rhashtable.c +++ b/lib/test_rhashtable.c @@ -369,18 +369,10 @@ static int __init test_rhltable(unsigned int entries) pr_info("test %d random rhlist add/delete operations\n", entries); for (j = 0; j < entries; j++) { u32 i = prandom_u32_max(entries); - u32 prand = get_random_u32(); + u32 prand = prandom_u32_max(4); cond_resched(); - if (prand == 0) - prand = get_random_u32(); - - if (prand & 1) { - prand >>= 1; - continue; - } - err = rhltable_remove(&rhlt, &rhl_test_objects[i].list_node, test_rht_params); if (test_bit(i, obj_in_table)) { clear_bit(i, obj_in_table); @@ -393,35 +385,29 @@ static int __init test_rhltable(unsigned int entries) } if (prand & 1) { - prand >>= 1; - continue; - } - - err = rhltable_insert(&rhlt, &rhl_test_objects[i].list_node, test_rht_params); - if (err == 0) { - if (WARN(test_and_set_bit(i, obj_in_table), "succeeded to insert same object %d", i)) - continue; - } else { - if (WARN(!test_bit(i, obj_in_table), "failed to insert object %d", i)) - continue; - } - - if (prand & 1) { - prand >>= 1; - continue; + err = rhltable_insert(&rhlt, &rhl_test_objects[i].list_node, test_rht_params); + if (err == 0) { + if (WARN(test_and_set_bit(i, obj_in_table), "succeeded to insert same object %d", i)) + continue; + } else { + if (WARN(!test_bit(i, obj_in_table), "failed to insert object %d", i)) + continue; + } } - i = prandom_u32_max(entries); - if (test_bit(i, obj_in_table)) { - err = rhltable_remove(&rhlt, &rhl_test_objects[i].list_node, test_rht_params); - WARN(err, "cannot remove element at slot %d", i); - if (err == 0) - clear_bit(i, obj_in_table); - } else { - err = rhltable_insert(&rhlt, &rhl_test_objects[i].list_node, test_rht_params); - WARN(err, "failed to insert object %d", i); - if (err == 0) - set_bit(i, obj_in_table); + if (prand & 2) { + i = prandom_u32_max(entries); + if (test_bit(i, obj_in_table)) { + err = rhltable_remove(&rhlt, &rhl_test_objects[i].list_node, test_rht_params); + WARN(err, "cannot remove element at slot %d", i); + if (err == 0) + clear_bit(i, obj_in_table); + } else { + err = rhltable_insert(&rhlt, &rhl_test_objects[i].list_node, test_rht_params); + WARN(err, "failed to insert object %d", i); + if (err == 0) + set_bit(i, obj_in_table); + } } } -- 2.35.3