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 44491C46CD2 for ; Tue, 2 Jan 2024 12:54:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A3E4E6B01A7; Tue, 2 Jan 2024 07:54:49 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9A0B86B01B3; Tue, 2 Jan 2024 07:54:49 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 77FED6B01AE; Tue, 2 Jan 2024 07:54:49 -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 6656D6B01A7 for ; Tue, 2 Jan 2024 07:54:49 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 14F39807CD for ; Tue, 2 Jan 2024 12:54:49 +0000 (UTC) X-FDA: 81634365498.26.E224B7E Received: from mail-ua1-f45.google.com (mail-ua1-f45.google.com [209.85.222.45]) by imf19.hostedemail.com (Postfix) with ESMTP id 528A21A000C for ; Tue, 2 Jan 2024 12:54:47 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=uZqRf2EM; spf=pass (imf19.hostedemail.com: domain of elver@google.com designates 209.85.222.45 as permitted sender) smtp.mailfrom=elver@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1704200087; 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=rzpHQecmeH/R/ZNceK/OpsKzmGzn/z2pMokFTKQkVW8=; b=AwU5o2LwcN1its5fm0eRWjU8Qu8MIPvPLym6IpXuRM8c6JmOImf+kTLvwH3gDI5YrVUZSN laGO4rACUXYWBFh0aluC9Wi5K6EIr8G6KI3gnSt9bvpsYnTFWDDW6jZF8emDOZLVNxwmpL Q0CmPBDazyffXcVL6/mDb7GCQulw1dY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1704200087; a=rsa-sha256; cv=none; b=Y3R6bxm0y5aD/haHVwrxVh+ynqpBnxdUwY3quEZjEcFpz8ZtX0bzjimiGeybuhOiooroZ4 wzi62ZnaYul9qTTM9DpJpvn9h76Lzhs7lRhMjMBkfTVuzSnU6BHKKatXqP/EUGYOiBaicm 5iRgjB7T4VqT/p4aWbrORefA0MZja7k= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=uZqRf2EM; spf=pass (imf19.hostedemail.com: domain of elver@google.com designates 209.85.222.45 as permitted sender) smtp.mailfrom=elver@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-ua1-f45.google.com with SMTP id a1e0cc1a2514c-7cc10f59524so5064639241.1 for ; Tue, 02 Jan 2024 04:54:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1704200086; x=1704804886; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=rzpHQecmeH/R/ZNceK/OpsKzmGzn/z2pMokFTKQkVW8=; b=uZqRf2EMUdIfCkPsaA8qJ4qKO52Gh8M6k6BnAX+iVkYQ4qaBxx7I3gUZKtQ6g7t06p k5nephCZJ8MlXREzpUVW88wBEgHl+/0obm6Tk92zio4aDADqQdLQ9S21xnZglsi2Ezxg OgY5TDkDKlElCLHs0ReP9a1PYoGBXLrxUOkQy0bGy34AZ7OL6EHfqn/jEiVexlsGNJXS x0wDjAQLpe14+QytUvWlp2FI0hoI5LcaPni9fY5d1826JuiH5uGzGqcsTBzVepIYJrHS hLzCMtn2Vuf7U2I9RnvrsokuDUhqXioSDkUgdVo+I45OHgKJa+uFDTBn/E955JtGodg2 BoFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704200086; x=1704804886; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=rzpHQecmeH/R/ZNceK/OpsKzmGzn/z2pMokFTKQkVW8=; b=Bvt7zm6nHhpbrb7KX9PEnRrLwgMxW43R/xq6gUY1uiWSiRNj5vNurQ2twTv90v6izT IuOALucqp8+nkUIzhVq04SolHCKQSfY2+cBlPeW1xIcp4T1ntLQkTJ+4p+o71FmhEACC mfuy/uHe8+GsZHw5NgovjDrbTXd9u7z6OW8Dq2eXoQM8OT/2hJ+9sZBiDcvIqbprh4ye FUzdapIWE98peHJ+rxT4OWShGLK0hBz3lYwanZPLueNn+FwtmQZkr4Mnvipn6unYa3fT DP3rt8lvLvGJqCY/CLqGQ1Z5IwfBWD93NoIc5XkZl1KSQI2PWnWtNHBSM/hVU6btF224 tf7w== X-Gm-Message-State: AOJu0Yx3aFosHA+LbpeJ2xT8pTFFqs48jQSC0T1TpV+KlI5zlEkZkYx7 DXM+Nd/0J/pxCnLeXn5IITVU+N/0oBvY5DYhIOVxdGm7Ylt+ X-Google-Smtp-Source: AGHT+IEIAjeQS5Nldf+P8hN72R8GL5AFzIy9khOg6AEOxv+ggLLQrjYXdtnj/+uYIGzRmTnpu5mFqqAnKPz2w2o32dU= X-Received: by 2002:a05:6122:9a0:b0:4b6:c780:ac90 with SMTP id g32-20020a05612209a000b004b6c780ac90mr10538276vkd.0.1704200086271; Tue, 02 Jan 2024 04:54:46 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Marco Elver Date: Tue, 2 Jan 2024 13:54:08 +0100 Message-ID: Subject: Re: [PATCH mm 00/21] kasan: save mempool stack traces To: andrey.konovalov@linux.dev Cc: Alexander Potapenko , Andrey Konovalov , Dmitry Vyukov , Andrey Ryabinin , kasan-dev@googlegroups.com, Evgenii Stepanov , Breno Leitao , Alexander Lobakin , Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrey Konovalov Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: 5rfrb5ja3qou3spz19ir8fsx4b48nxrp X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 528A21A000C X-Rspam-User: X-HE-Tag: 1704200087-204081 X-HE-Meta: U2FsdGVkX18iYn4/o7gAOt+Ve7p028TDquCiH/bPHmB7xxYMKHaiLBzKRd+1D5IYvgg/HuJJ97PlovP4Jcar5WXV6La8mEEgfx0onR//zd0VKhoZXwyGWLiC2lCnLCrbaP2xvsGGZdvHNQdnvQswJdEz7lFXN6y+SPC+72/wSwniunW4WEMZ7DRkbTMuVY02hXExlvQHl2KaLaS9g8zpUNBZlrlXu1L0i0alo8xlbripYGADF282DsQXoEie2IMMUBXATy7nDajT/9WtcPMNsQNGwg0a+x3FiyD1WSxEyh6fZTvV2tL87I4huaB1uSaXjlvA77UK26jDmqmoCfWDAz4Bo2BoG9YgbVBoKOuR8gbo1M10KtVi6ArUIj7V11EDAXfyMZBR6M4HcmsCGcDGFaWJ1bAdClzESj9yKRtQuCV6XpRgWzq10/+UB+3mXlTSHpH0JAigwU3ySCW5bePE1PD3JSn4CaFyBnwE8Bso+ZGqf+GurvyWkkmHtXfH/+6BByh/lc55cknEZTWvCGRXsgww79v+KB7zkZkWPFu73J2RCYm+V6sm3Uqq/45CoSZPBHjog9BPaMSLcKd2+qTBBSpGakuGklWskfJDaW9PwvIXqLJlRyHKLzkjPRVl2KvsVd2DkoXcyAz0sa00mKstdrncYO0KS9aWsd0fchhtLvQeJUMni/QI5OmQ0zC6gVncHzhf1DmisU4cE34kdr7sMRnNt8VoOEwcR8+w4t9GC5NQqY7hZwGPltCuHgAJ3w7hisZsvo4x5RpUeHxUeWZbigFePGhtWKPpfks4mz7js+jtEik3ClWlb1JjTV6u5BPhMa1yAE02tLR/oysWPGFUcSPt2if+CvtqqxTL5hpr5RIZ5vyGaOyCMXhpJ+4MDA8JQnOdT/w229Ngo5Jcpf6AeE+gXX0UBBRMFGUJMTY3XelT8k7TopxkiIGoRk2vNivjDP54mbR6L3iUH/2Yb2f k8NhiEx1 rwxmlyHaT6cuAa5ngvHtkzP2rsbes2fiYX2WvRrQhyWmrxBtPpq5yRSZoiW50zCRer0UhjXQvRssR9yZssMcIGWJBhIpRywTWY086uMIAe71IZmO5fwd/dG9oy4fEgTd2W2tOypiGu92akR5BeW9TRXKW94zohLi5vTEw9fJ0duHHgoH0VuKhhPk6D5aIDTfVzFAViiSyM/c7citqHnYCDs0hr7Nw1rRCvG/HmwzqO2SHt0+AGTM9cY0uBxYK8QJAvyN+DQwH3/L6drl+74X/ZMD0nwYK9uH5mZNhUAfww+eh4AeANCRZQAW3AftqAFwOKJe2nDzE1AkyFc+0btm8sYl4MEic31DVsLSlvXvisNQId3o= 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: List-Subscribe: List-Unsubscribe: On Tue, 19 Dec 2023 at 23:29, wrote: > > From: Andrey Konovalov > > This series updates KASAN to save alloc and free stack traces for > secondary-level allocators that cache and reuse allocations internally > instead of giving them back to the underlying allocator (e.g. mempool). > > As a part of this change, introduce and document a set of KASAN hooks: > > bool kasan_mempool_poison_pages(struct page *page, unsigned int order); > void kasan_mempool_unpoison_pages(struct page *page, unsigned int order); > bool kasan_mempool_poison_object(void *ptr); > void kasan_mempool_unpoison_object(void *ptr, size_t size); > > and use them in the mempool code. > > Besides mempool, skbuff and io_uring also cache allocations and already > use KASAN hooks to poison those. Their code is updated to use the new > mempool hooks. > > The new hooks save alloc and free stack traces (for normal kmalloc and > slab objects; stack traces for large kmalloc objects and page_alloc are > not supported by KASAN yet), improve the readability of the users' code, > and also allow the users to prevent double-free and invalid-free bugs; > see the patches for the details. > > There doesn't appear to be any conflicts with the KASAN patches that are > currently in mm, but I rebased the patchset on top just in case. > > Changes RFC->v1: > - New patch "mempool: skip slub_debug poisoning when KASAN is enabled". > - Replace mempool_use_prealloc_only API with mempool_alloc_preallocated. > - Avoid triggering slub_debug-detected corruptions in mempool tests. > > Andrey Konovalov (21): > kasan: rename kasan_slab_free_mempool to kasan_mempool_poison_object > kasan: move kasan_mempool_poison_object > kasan: document kasan_mempool_poison_object > kasan: add return value for kasan_mempool_poison_object > kasan: introduce kasan_mempool_unpoison_object > kasan: introduce kasan_mempool_poison_pages > kasan: introduce kasan_mempool_unpoison_pages > kasan: clean up __kasan_mempool_poison_object > kasan: save free stack traces for slab mempools > kasan: clean up and rename ____kasan_kmalloc > kasan: introduce poison_kmalloc_large_redzone > kasan: save alloc stack traces for mempool > mempool: skip slub_debug poisoning when KASAN is enabled > mempool: use new mempool KASAN hooks > mempool: introduce mempool_use_prealloc_only > kasan: add mempool tests > kasan: rename pagealloc tests > kasan: reorder tests > kasan: rename and document kasan_(un)poison_object_data > skbuff: use mempool KASAN hooks > io_uring: use mempool KASAN hook > > include/linux/kasan.h | 161 +++++++- > include/linux/mempool.h | 1 + > io_uring/alloc_cache.h | 5 +- > mm/kasan/common.c | 221 ++++++---- > mm/kasan/kasan_test.c | 870 +++++++++++++++++++++++++++------------- > mm/mempool.c | 67 +++- > mm/slab.c | 10 +- > mm/slub.c | 4 +- > net/core/skbuff.c | 10 +- > 9 files changed, 954 insertions(+), 395 deletions(-) Acked-by: Marco Elver