Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp983577pxb; Sat, 30 Oct 2021 03:15:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw+PvL3F5WnBD76eM2XUTHA11WUk3UjI3diTc9ex2i3lESF3zoYlrbLMX2ub39FkuyM+uA+ X-Received: by 2002:a17:906:4e55:: with SMTP id g21mr7111567ejw.426.1635588911986; Sat, 30 Oct 2021 03:15:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635588911; cv=none; d=google.com; s=arc-20160816; b=Th1AynMuu90BAj5IQFiZAkK5ABZidjsJmBxY83S/ck28AFk+2gSKVzs7rbYWM6wFC4 N/2nRho0cKnVZPMaf5M74ca0GHQduJt5FHJS4e9/dnT05cUG/ygk42iJqhBdp8qBG/Xq zpyRI60FROoqKXMOvy6iN4CuPU0YVgJ8yGIC/CjP+ZuruGJS++kcBZJJDOqdt6VervbF NFHJ4D6FqdTtZyFVagzTkibq9GEe4MMmF5sZET+F7M+QaSOHU2ObcdmMAB3nvDMLfQs+ /MhwsYYDFTWnIgeF4uJM1WMQXb6dqyFw6GfZlYkvB6KxvVMhRHVjEm2jURyh4M1cQG9I Ve2Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :mime-version:user-agent:date:message-id:subject:from:cc:to; bh=lLsbuGHVW1DOmAzRfSLsJLo5rrvgOjDbK23Yln8+m5U=; b=prrAHb7Z2+DtuqdLCJhTwXJOqAPMfH/8NKUGQ429cp5nvw5mUABPDcPOI1e3YYH6Q4 4TGhhAwJg+5USe6I2kNMWetb3DMUSHzQlv6q1qrgYONqhnQvGNcVCNF5cPsYJ+2b8LHc N192/HvSCgdyotPpLiyrIZJ8ssk7a60AOkgSAqwFo2cSxcLk/b3P9FjSddNbEnDqyNha S9+7LyQF4oyHjNFZ+NJBz0IWyiIGJJvE5kXND0OYSzx4T3GVUu5qZhgcKP9rXWfJMPRj ItguDRN1zM4l3ORUcHCAk4JO/fnUXhfb6+8n7EfknjGy+d0Gm/7jSVFJPLVaG7oIazQ3 tkWg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y22si16225152edc.353.2021.10.30.03.14.46; Sat, 30 Oct 2021 03:15:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231772AbhJ3KOi (ORCPT + 99 others); Sat, 30 Oct 2021 06:14:38 -0400 Received: from szxga08-in.huawei.com ([45.249.212.255]:26137 "EHLO szxga08-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231685AbhJ3KOh (ORCPT ); Sat, 30 Oct 2021 06:14:37 -0400 Received: from dggemv704-chm.china.huawei.com (unknown [172.30.72.54]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4HhFR03c1Pz1DHtG; Sat, 30 Oct 2021 18:10:04 +0800 (CST) Received: from dggpeml500024.china.huawei.com (7.185.36.10) by dggemv704-chm.china.huawei.com (10.3.19.47) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.15; Sat, 30 Oct 2021 18:12:04 +0800 Received: from [10.174.176.231] (10.174.176.231) by dggpeml500024.china.huawei.com (7.185.36.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.15; Sat, 30 Oct 2021 18:12:03 +0800 To: , , , , Andrew Morton , , , CC: , Hewenliang From: Yunfeng Ye Subject: [PATCH] mm, slub: place the trace before freeing memory in kmem_cache_free() Message-ID: <867f6da4-6d38-6435-3fbb-a2a3744029f1@huawei.com> Date: Sat, 30 Oct 2021 18:11:52 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.174.176.231] X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To dggpeml500024.china.huawei.com (7.185.36.10) X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org After the memory is freed, it may be allocated by other CPUs and has been recorded by trace. So the timing sequence of the memory tracing is inaccurate. For example, we expect the following timing sequeuce: CPU 0 CPU 1 (1) alloc xxxxxx (2) free xxxxxx (3) alloc xxxxxx (4) free xxxxxx However, the following timing sequence may occur: CPU 0 CPU 1 (1) alloc xxxxxx (2) alloc xxxxxx (3) free xxxxxx (4) free xxxxxx So place the trace before freeing memory in kmem_cache_free(). Signed-off-by: Yunfeng Ye --- mm/slub.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/slub.c b/mm/slub.c index 432145d7b4ec..427e62034c3f 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -3526,8 +3526,8 @@ void kmem_cache_free(struct kmem_cache *s, void *x) s = cache_from_obj(s, x); if (!s) return; - slab_free(s, virt_to_head_page(x), x, NULL, 1, _RET_IP_); trace_kmem_cache_free(_RET_IP_, x, s->name); + slab_free(s, virt_to_head_page(x), x, NULL, 1, _RET_IP_); } EXPORT_SYMBOL(kmem_cache_free); -- 2.27.0