From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 835EBC25B4E for ; Tue, 24 Jan 2023 16:16:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EBA5C6B0073; Tue, 24 Jan 2023 11:16:37 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E6A976B0074; Tue, 24 Jan 2023 11:16:37 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D31EE6B0075; Tue, 24 Jan 2023 11:16:37 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id C9DC46B0073 for ; Tue, 24 Jan 2023 11:16:37 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 9C0CA1C233A for ; Tue, 24 Jan 2023 16:16:37 +0000 (UTC) X-FDA: 80390195634.01.1514254 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf07.hostedemail.com (Postfix) with ESMTP id A059F4002A for ; Tue, 24 Jan 2023 16:16:34 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=YNiTQDTY; spf=none (imf07.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674576995; a=rsa-sha256; cv=none; b=kwfckS5Tl9P5nebToewRA762iAtTBpJpoJhimE92dwHNGYNMgsI31dMPRyBv0LJUweG7V1 gGP0SLJ94FEfJy30u4OKF9BqPwAjRCQAxJSIeGGHsVcISatxAAEsUM00VCWamU5ED3izNM Ko9p51TjloNmHWMODEtjMOafB+UOLdA= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=YNiTQDTY; spf=none (imf07.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674576995; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Unn061V4Jao+mFVgczqW4o8yu90bXgPEP/3+texvOEA=; b=tYoPy1FYYEg5pf96DJHemZqjeWdK1aOTLvKLLHR+59ek9VfOVZ0INwTiUFEIxzaCCk8s3X kb53WufvaefsUht6R5YXBr0ooLlEMdwuSCijbt1SP0fsM5X1DM617R+OPRS3sGfRkD1KE6 w0wOdwaciewTCUw5TRUCfQ2WaaR9s4E= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=Unn061V4Jao+mFVgczqW4o8yu90bXgPEP/3+texvOEA=; b=YNiTQDTYWVCPebPepGx0EimJI6 fIaSeIaoEn5Qv9drp8+pbdo11nzel5DZDkJ/zkQHQ5ygCi5YYp3Up0fpfJrB8pk6ebq6QiBuOB5DI 2Z9UTZ6xHdfNmzdCKARVwpJClmmd27piEPqm+MKKrzKtG+MjluEdsh6UALz6tcaRUrUglc2fvfn1g 2JcZkrH2ikH6XcewM3Essz6YkHSxdhu+6JjQo2p8xkzcLc0ksFUqACvy32xuSOCP9ohrxO3kD4rv1 fi1dQ9kuud3gzfluxErCU8vxWBHzZ9nsgMzazdjuzL6wG/TYUSCzp4DExqtx/9XURMnhO8R9lMv0Q gsLh1YXA==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1pKLyA-005BKV-ND; Tue, 24 Jan 2023 16:16:22 +0000 Date: Tue, 24 Jan 2023 16:16:22 +0000 From: Matthew Wilcox To: George Prekas Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Catalin Marinas , Andrew Morton , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Vlastimil Babka , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Thomas Gleixner , "Eric W. Biederman" , Sebastian Andrzej Siewior , Andy Lutomirski , Peter Zijlstra , "Liam R. Howlett" , Fenghua Yu , Andrei Vagin Subject: Re: [PATCH 9/9] mm: kmemleak: fix undetected leaks for page aligned objects Message-ID: References: <20230123170419.7292-1-george@enfabrica.net> <20230123170419.7292-10-george@enfabrica.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230123170419.7292-10-george@enfabrica.net> X-Rspam-User: X-Rspamd-Queue-Id: A059F4002A X-Rspamd-Server: rspam01 X-Stat-Signature: bnpc59y5dge5eayqsr65scxammbuqu9d X-HE-Tag: 1674576994-972708 X-HE-Meta: U2FsdGVkX18EMNwe9DdcfTaLjYs6u4dwGcU0SDlZpEZKQP5AdzI0zFzEA/6eep7FDoOz5Vo1yP31UdtgtYB4HchSVRJDnFQhoAsZ8JLbXODx6HueZq0fJhyGXtcHc4maWJaWi6qVJTdbVr/BCi4L1IP1CcwzQkMruFiybX2AAdZv7Y+U4tqK48+Ghln89vvgvRwPi8oTug+1bUFQFf4LjP+w/+jUKEITWxQOlzqPY15QF3OeR5+z0ZxZ3cRacZ8IjHay0pIcRgfoXWqnI3jPQ20tQGyQSGgKnbWwWFgA33ouWQpZzHp7/QJ5vju8hNK0EeM0h8IXvJ54R4n+58JEiU0LbIf2pO5XWTX+LMdl3FFCPrTfP6JamJ99hsYw+PlypEkpi0jEa+EhFmHsdsBP/+F8OicMk17Yo8N5jqFfKBYvcQ6nyIw//9VUcXi6/1FgW/ef8mM7UER6ZaDu6MddAzGvJkHdk3+rJYM3cOy8HSHJ+KumaLo80JplXPQtPPJBuZz8q5VjrkAf/8R5EMkVcUKknC0kEaD+P632Srh8l1lrMstXbgDULT9GnbEyEVS5KoHDsRAKFZCK87298dh2Cd6bpg7X+rs7DcxfDJesZRYvve7i2zFCuTUylgsMDZ1BHEcXdpRVbGkvcUSXzoXetYhEvWVeOabX59CRudXfrdtkOD1lbTCwXhDbK4BhgOqkK847QSCCFCZqQG5G1OutlWxlfKAbCi7qwWwVDZ7lze8YWyuS0yzmiL7yq1vw/fKoFSz/5VK5ByePq4iOeQ4VlRXUUzHJA8cOD9OTftJCJBW/lhyOcbhVJJl1ciyg1SevDVO47PNLk9y2RnAmu0rEl29SQ1F0rsF3Gxg3o40a6vWLr67o71RDaehtf6fGq/o00+wNwW+0QcmEfcyd1q+BJ7P63HQMOU9lDzOyfY04FzFPudie2hM58z8Y6f5FRcJctXlfwegJeX5eXTSCcj3 ZwtNL9Og S2i7UAo7KHQ60zE+OlYM2kZHQ7IfKadYOEdshaykew6hvgZHiQmR5Jkz+HdGU6iaDfrDvenUqOTlxNId6ZM7R5K5WPMEJ3gxURlwll0GbppXDfGtx2V7a5VOxQbJCL6FLueIPmesi0iZ2AD31P8gu+ejQmtVhV0hKf3bvLNDtbZKItDI59kkGxx6B4HYUKoXp9AfpGSXDqWv4tGh7HA83aZqGXBfQNfTJ+PIV X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Mon, Jan 23, 2023 at 11:04:19AM -0600, George Prekas wrote: > If kmalloc returns a page aligned object, then the object has 2 > references: the pointer returned by kmalloc and page->s_mem of the first > page of the object. Account for this extra reference, so that kmemleak > can correctly detect leaks for page aligned objects. Is this true for multi-page slabs? Imagine if you allocate objects of size 4kB. Slab/Slub will allocate slabs of size 32kB and try to allocate 8 objects from each slab. Only the first one will have an s_mem pointing into it. No? > - kmemleak_alloc_recursive(p[i], s->object_size, 1, > + min_count = 1; > + /* If p[i] is page aligned, then a page->s_mem refers to it. */ Also this comment should read 'slab->s_mem'. Individual pages within the slab do not have s_mem pointers, only the slab. > + if (((uintptr_t)p[i] & ~PAGE_MASK) == 0) > + min_count++; > + kmemleak_alloc_recursive(p[i], s->object_size, min_count, > s->flags, flags);