Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp2251751pxb; Sun, 24 Apr 2022 09:03:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyPA9b8bocqiS6dMfr6ArCO58Bp0QOOgncTxe/oJ0KhGEz3uygi6aqbJ9QfS36p4quOXor/ X-Received: by 2002:aca:f389:0:b0:322:3753:bf51 with SMTP id r131-20020acaf389000000b003223753bf51mr10129808oih.44.1650816224805; Sun, 24 Apr 2022 09:03:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650816224; cv=none; d=google.com; s=arc-20160816; b=nNALHMkZsMS0tqOJxeztR5sz75tFRM7FRjHOmFwBI/dD7zJO7OAmgNOEo3tSjI+2FN DQPWkiy+CaIBPdmyFn0y9vBdH+rCzH9CXhJNNJ4iCplOIojMz2Z5LBE/+Q19Qgaraxg5 SUXtfgRgAAC6bBxKglXBRdv9Zm73yiM+gxaT4AXB9uaTh3KhpWr1wEX320Uo6zbiQfEx 1cv3CbL/LAzsNGtQ2R8tY/HeWyKEYtnCy+31IfADfDiFseqwAJ70DeTkgl4MG0QVhdcl yphE/yW++GjpTHRR1G2Vw/J6dawbzDBl7DbmR4fLxDFLh3aofH+wBRq0fGM+6CjPjlfk AuVA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from; bh=gmXNl4tIfL5wRbTrjuvKfaCU9MK0lOXp83omTUSrSMo=; b=SprktJHx1MhjJIfFNxjAwEh72TB+GxMit4ED95iRDvhJ07mt/R0oApMNp0bFrGMvt7 vGIJoNWetI0cKWXe9FpeZB4C2JjKa9gOlKO+y7mS1CfEYoI/ByMfGbqxz2pTDxhBcBzs /ktjhn2hmI5Wt7369DfHO+rdf/y7ieyCF+BOxYxoJ2376Z8aldDmSiulVEyDDu6Wb8eJ zYsmkRuG1vF4LIsx07GFgJ3lRi7/EDsFkvczjkZpzuhh2WtPmZQrYL9ZLO0k/oZ61MHz XCG+cFC6+y9yYP0bYhCS/zxFm8k2mTIrWT+LYCDbs/PHdNfvzFhvLmFMMBTp9GJJ77Ro 2fBA== 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 g15-20020a4ad30f000000b00329dab1a08csi7451137oos.40.2022.04.24.09.03.03; Sun, 24 Apr 2022 09:03:44 -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 S236216AbiDWQAd (ORCPT + 99 others); Sat, 23 Apr 2022 12:00:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38820 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236193AbiDWQAM (ORCPT ); Sat, 23 Apr 2022 12:00:12 -0400 Received: from mail-qk1-f171.google.com (mail-qk1-f171.google.com [209.85.222.171]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 53A4D2626; Sat, 23 Apr 2022 08:57:14 -0700 (PDT) Received: by mail-qk1-f171.google.com with SMTP id b68so7960491qkc.4; Sat, 23 Apr 2022 08:57:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gmXNl4tIfL5wRbTrjuvKfaCU9MK0lOXp83omTUSrSMo=; b=RqYcKbwdqymvvBUcZsqs2449ogL1+J5xlvDJt3JhwCZln//N/ASrDT/R/AsaDi4r5W cIyOVCbsVpPi/SMbtnKam77lZMmMXxm9wLpnJBdJi/HllZEC2KQiJYrGcW17reB32E54 ku+/2abwX9sE/cQp5p7y95LwjCInYWf/PuEm1+9jJa8GmEgcnvTCIx7C246S0wt0brbM IJgdz59Ydq00nA13w6Mblr78h/uNX+FOOUhhm3rqqL+/dIC/t5+7RfKdrIdBRQy6/lWA 8jl+qDzgEVcBy2wNfZ9eccDkleiFjXgCCdLv9JKEJntYEOhy5LTMNg+nvHMOpmhSXgD5 x2tw== X-Gm-Message-State: AOAM530fcqYnQojJzgxWl3pQ39U0MPI9ieIcXsNi8GwxbBLydcYne6SW W7onRlfVvmLEvZOoX0OFoic= X-Received: by 2002:a05:620a:2588:b0:680:f657:fbd6 with SMTP id x8-20020a05620a258800b00680f657fbd6mr5649398qko.287.1650729433397; Sat, 23 Apr 2022 08:57:13 -0700 (PDT) Received: from localhost (fwdproxy-ash-119.fbsv.net. [2a03:2880:20ff:77::face:b00c]) by smtp.gmail.com with ESMTPSA id w4-20020a05620a0e8400b0067b1bcd081csm2321762qkm.66.2022.04.23.08.57.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Apr 2022 08:57:13 -0700 (PDT) From: David Vernet To: akpm@linux-foundation.org Cc: tj@kernel.org, roman.gushchin@linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org, cgroups@vger.kernel.org, hannes@cmpxchg.org, mhocko@kernel.org, shakeelb@google.com, kernel-team@fb.com, void@manifault.com Subject: [PATCH v2 5/5] cgroup: Fix racy check in alloc_pagecache_max_30M() helper function Date: Sat, 23 Apr 2022 08:56:22 -0700 Message-Id: <20220423155619.3669555-6-void@manifault.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220423155619.3669555-1-void@manifault.com> References: <20220423155619.3669555-1-void@manifault.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=no 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 alloc_pagecache_max_30M() in the cgroup memcg tests performs a 50MB pagecache allocation, which it expects to be capped at 30MB due to the calling process having a memory.high setting of 30MB. After the allocation, the function contains a check that verifies that MB(29) < memory.current <= MB(30). This check can actually fail non-deterministically. The testcases that use this function are test_memcg_high() and test_memcg_max(), which set memory.min and memory.max to 30MB respectively for the cgroup under test. The allocation can slightly exceed this number in both cases, and for memory.max, the process performing the allocation will not have the OOM killer invoked as it's performing a pagecache allocation. This patchset therefore updates the above check to instead use the verify_close() helper function. Signed-off-by: David Vernet Acked-by: Roman Gushchin --- tools/testing/selftests/cgroup/test_memcontrol.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/cgroup/test_memcontrol.c b/tools/testing/selftests/cgroup/test_memcontrol.c index 38d2054eefe6..3bac06999354 100644 --- a/tools/testing/selftests/cgroup/test_memcontrol.c +++ b/tools/testing/selftests/cgroup/test_memcontrol.c @@ -564,9 +564,14 @@ static int alloc_pagecache_max_30M(const char *cgroup, void *arg) { size_t size = MB(50); int ret = -1; - long current; + long current, high, max; int fd; + high = cg_read_long(cgroup, "memory.high"); + max = cg_read_long(cgroup, "memory.max"); + if (high != MB(30) && max != MB(30)) + goto cleanup; + fd = get_temp_fd(); if (fd < 0) return -1; @@ -575,7 +580,7 @@ static int alloc_pagecache_max_30M(const char *cgroup, void *arg) goto cleanup; current = cg_read_long(cgroup, "memory.current"); - if (current <= MB(29) || current > MB(30)) + if (!values_close(current, MB(30), 5)) goto cleanup; ret = 0; -- 2.30.2