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 6EA7CC636D4 for ; Wed, 1 Feb 2023 07:36:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DCBC36B0071; Wed, 1 Feb 2023 02:36:44 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D7C2B6B0072; Wed, 1 Feb 2023 02:36:44 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C42FD6B0074; Wed, 1 Feb 2023 02:36:44 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id B373D6B0071 for ; Wed, 1 Feb 2023 02:36:44 -0500 (EST) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 8A9591C1988 for ; Wed, 1 Feb 2023 07:36:44 +0000 (UTC) X-FDA: 80417915928.25.B37B167 Received: from mail-yw1-f175.google.com (mail-yw1-f175.google.com [209.85.128.175]) by imf30.hostedemail.com (Postfix) with ESMTP id CBA168001B for ; Wed, 1 Feb 2023 07:36:41 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=BRlZce3M; spf=pass (imf30.hostedemail.com: domain of yongqin.liu@linaro.org designates 209.85.128.175 as permitted sender) smtp.mailfrom=yongqin.liu@linaro.org; dmarc=pass (policy=none) header.from=linaro.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1675237001; a=rsa-sha256; cv=none; b=UQ5wsTyisZiCf7HNKrpsSKYbJMaYpykCZ3L64NZtLjA1YJOixWpDJwlFrQ+PPSjBm7u6s+ 4XAOFUE0erWmVR67yf0Sw3PNKWGtnVDuVLENj3nBH1Mrn22c5X2XPbPxZiPfhUFVh8MMPz jEE1vqWv1gIVic9Fyl0r/8wIT6Fyuj4= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=BRlZce3M; spf=pass (imf30.hostedemail.com: domain of yongqin.liu@linaro.org designates 209.85.128.175 as permitted sender) smtp.mailfrom=yongqin.liu@linaro.org; dmarc=pass (policy=none) header.from=linaro.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1675237001; 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=Dx1zARWQRp48CZ4kQ2x9yqFjiGpyMZcTuGlBFtRENQ8=; b=r4N6VZUZMrhnC62LKEr8NSshd9ioCsXohoqN0q3BgQBY3VRCtfZcLekSq449B64j/9p4VS oZcOpyTAE8/s/qTEXWKx+h/H1/LL7dMrPnyeqkw7CzQeEa2GXdwC+EVk+Ol4dESESytEY6 x8i/1FoMoMzQ68mnPQD1uZVVnjlPVfw= Received: by mail-yw1-f175.google.com with SMTP id 00721157ae682-506609635cbso234996767b3.4 for ; Tue, 31 Jan 2023 23:36:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Dx1zARWQRp48CZ4kQ2x9yqFjiGpyMZcTuGlBFtRENQ8=; b=BRlZce3Mvkorg1JlE2Wn1RlKnSRnE2Kv+cjMHl7bPVvhXBvI3EsEGNQCBqfTULNHfs OIJaUMb6Lw1Mrjv7rhACXJIw2oT0RUBMdRxVbqhZ38hOC7RnHuFHmiIBfggjs1v7OSZs F1IaLNom6Wq0vQiiSCyhsQFpTNVL2ictpQ3UYV7RfWWHEV4BbLb2NFc9Bl8kA9VFQvpj yYIrvgho2njaNqV43HIQ+d1ZdBvnmUj1O3494UXIkt6Jhy4xtt47j8vwxyNlDfhC7Uvq PJHcTwVdYnDDWTIUX/jtU76HRoMlKspKWbZIDsInfk/ZA4DSSsdkCQeMezIVBj6ji1UJ zTwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=Dx1zARWQRp48CZ4kQ2x9yqFjiGpyMZcTuGlBFtRENQ8=; b=sm0Fy3/GHPX96s3zkNrgla1fGSybue2Waua0meKDTDTfVE4RuaZzou6E2v5ebzDXLG 4mW3cD7iUJOJPzeDGiBTGkz+kmWmSu7mTlzk6Vg0yL++N92RgaF5Irg9g/MOeOtfh/qM Ifdr4N6ExFGbi7uy+g/ceUSl8cLHnWPW3q32YAZV4GrKqeMm3B29KpDERuXVDfbuAi5m r7O6xBwvj9vyZPUY+yyGz73Qr2/PrVGWNpdczn66X+AbRVhbt/YY3W/G4SkLRFyujzd8 EvK/lSJFhGRTpFLIH83IbJjEtqlPIO6b38ZRbQM43lBBchvvjMGL5qEr+rLdbg5qSjzt RHtg== X-Gm-Message-State: AO0yUKVHlentthG2O25UMmJRqY3qATZAo9NiwMngqXrDkdkaoaG5uQB4 Nr/yAD4dkKmtzzxFiiFxNuH8f+tzTJCWS6hviXfgAg== X-Google-Smtp-Source: AK7set9m5+elP4l199y4Ungn8cTJMrhmcu+zMRDCt/0pfgHMmTXjacsBA6C+zGyfsSND4y7wWAZyPtDwbItCigzngy0= X-Received: by 2002:a0d:c046:0:b0:517:b161:1f4d with SMTP id b67-20020a0dc046000000b00517b1611f4dmr146538ywd.399.1675236998861; Tue, 31 Jan 2023 23:36:38 -0800 (PST) MIME-Version: 1.0 References: <20221101222520.never.109-kees@kernel.org> <20221101223321.1326815-5-keescook@chromium.org> In-Reply-To: <20221101223321.1326815-5-keescook@chromium.org> From: Yongqin Liu Date: Wed, 1 Feb 2023 15:36:08 +0800 Message-ID: Subject: Re: [PATCH 5/6] driver core: Add __alloc_size hint to devm allocators To: Kees Cook Cc: Vlastimil Babka , Greg Kroah-Hartman , Rasmus Villemoes , Thomas Gleixner , Jason Gunthorpe , Nishanth Menon , Michael Kelley , Dan Williams , Won Chung , David Gow , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Guenter Roeck , Andy Shevchenko , Paolo Abeni , Geert Uytterhoeven , Nathan Chancellor , Nick Desaulniers , Tom Rix , linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-hardening@vger.kernel.org, llvm@lists.linux.dev, Sumit Semwal , John Stultz Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Rspamd-Queue-Id: CBA168001B X-Rspamd-Server: rspam01 X-Stat-Signature: koei4kzgnd4wod8uw41rdycipq89wih5 X-HE-Tag: 1675237001-699616 X-HE-Meta: U2FsdGVkX1/o5pfYpK2Tc8s1QZIs9gHCSJ/9YnfUdqDObiglfdJqQpJnJ8KVZPc/PHRFeYebkWbeXOnT134tTVbgYP8Y7icnpztg+Y4cGI7rltIyDxIh6zj1OcCEZbRVC6Nq9nWzykei0ogeyDJwJDreAtoy8V8Hmq51PS8pU56ccTrCtZIS0YjXvwG9CleK/uHmEbppTofywBSnS4a0GROuyJewgbsHtozswezcWmloV6wlXov22/RHxOb23WRavWeBbsAAIZKsS8YfFUN0ns1KNXPRBOuNzFl8pQcngeoFodXJXYdPI7t8uKgSZAFdUBU5UO/yOKmt9KJErOo9DCcpKtsGlo80+GdgrU8SeQDk8TaWVwhN38/7FRYuD0llNus3SR8JtbxDogUmXNP0gBagunRWuvY/TwBiKKiOVYv1pcxZebp6SqUuNBA4OyYImbFWb99hIJxP9i2YQmrrDmbeBf6B/morzGsqYEUsHPyXtkhEnW2gbNpXbbKLWS5fByPiBJDk43Dq7P3eXl/bD5Gmx51ta/RFzYXws16A+14uRdn2VLXp/21dGGm2WxKBirgJy/gKN6PZ59JPJiQFKmBMqLUmR6bdMYuCM5+an19aSvwoHNn54ut0MKqECKLFpty18Oa2G4D46Okg/VXiugv1l+Becbv+YfXvVEQCpwayK9VPk/cPcbNw4a2dSgDnddGAU2VTY4lMhbyNCggJK/RauSI7MqpeAJ0b1g4kiQEdnrIxbLnZ1rTSGmStuyjc53EtaYfnLK8K6tpqyLDQLMBYD8fffxdZANE170jYR6q4cgl7w1J9wQoz7ab0o3zsFdlPhPS1kaMR2DZb70315gol9maCVlZ/0Wypo/stW+wuh1QPLM6LBlXf9uMW1Ne/QuyThw8oXiXh2QbEo+OLOfDY7VR7ST1TUgiRQCU1z3hz3dZIEHGCpziQBOwLlaODNedGYnqbDO4xVMgfAoM DqQgCNrY Oyt9P2zrcomli9lAJThj2EZNKY1L0zCrT/s2jdTVH3UlywptdGDPOO+0PtQET02rTpBQ+W+sxqbEqmY+D8GVkA20lRaQo2knWDOUUGDyHHfQjbWaHHr7rxT6mbvWQhc3X7Ezi+p2iWVR3QwSXfs8iIXyH71rp9LYGlfSH32cEL4SjEr+NnaM7hfF2kzG6Kqp1cmPqTo7fi38rOy/UDVavv4weW9/k5nT/6C2t4bKAkD08piCE/XFLxz/I3Wbu5YeiE+5oDw1fsVu7qwXk2oWyg3GIxVLCFd/7bW/DSirh68mBZcVWhtuCkCQtPVN4lov055edg00VdIYzfvRPmnw0fajoIFaBnY9xeCT4UP5BA7+Z5PfgdEqcGvuqsuuivjQp+/FI6YFMGRbMHzyFKJPDf7NgncK1yPbazbp+N2aalVfmPU0we45ZwLYIVDD+4mefU7KeXQRxIo2Bfjm46uMFzVRl0RYzixVcmTEX1XKNTqdFEuODP6csPGLfjLplHG0B32ebgVK1MFPRHc4TjYG7ynDeG3uko0Rux1dk6d0OxVKVCMZXMwa00MQiyR6/WSv324jwKoDbaArh2x1k5p2RX2Fum5GRRYpaX/t6Ux30KhI32gllUpBFbJf9e9oBDMaGwtHlnLW/7ZmgcBxENrG0RpEABwx2cWaINgBgDoXoFVTZPizNTb4ClXraxVmja7cPL2ihGuKdVfaAtPqXMKqAmdeBa9eyqhhm/mMFgzSa3807RfQ7h6Oi923iYDzohrc5CWJongdiyFI03ZP/p8uKZXXXKRU+/+qGxlPyn8vo1o3w6emqFsWrxzOZ92006WLkNERw5vDa/bPPxECQug6aYVWKGsn0xRPIuUyuEoivCGHXUkc= 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: Hi, Kees This change causes "Kernel panic - not syncing: BRK handler: Fatal exception" for the android-mainline based hikey960 build, with this commit reverted, there is no problem for the build to boot to the homescreen. Not sure if you have any idea about it and give some suggestions. Here is part of the kernel panic log: [ 9.479878][ T122] ueventd: Loading module /vendor/lib/modules/spi-pl022.ko with args '' [ 9.480276][ T115] apexd-bootstrap: Pre-allocated loop device 29 [ 9.480517][ T123] ueventd: LoadWithAliases was unable to load of:Nhi3660_i2sT(null)Chisilicon,hi3660-i2s-1.0 [ 9.480632][ T121] Unexpected kernel BRK exception at EL1 [ 9.480637][ T121] Internal error: BRK handler: 00000000f2000001 [#1] PREEMPT SMP [ 9.480644][ T121] Modules linked in: cpufreq_dt(E+) hisi_thermal(E+) phy_hi3660_usb3(E) btqca(E) hi6421_pmic_core(E) btbcm(E) spi_pl022(E) hi3660_mailbox(E) i2c_designware_platform(E) mali_kbase(OE) dw_mmc_k3(E) bluetooth(E) dw_mmc_pltfm(E) dw_mmc(E) kirin_drm(E) rfkill(E) kirin_dsi(E) i2c_designware_core(E) k3dma(E) drm_dma_helper(E) cma_heap(E) system_heap(E) [ 9.480688][ T121] CPU: 4 PID: 121 Comm: ueventd Tainted: G OE 6.2.0-rc6-mainline-14196-g1d9f94ec75b9 #1 [ 9.480694][ T121] Hardware name: HiKey960 (DT) [ 9.480697][ T121] pstate: 20400005 (nzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 9.480703][ T121] pc : hi3660_thermal_probe+0x6c/0x74 [hisi_thermal] [ 9.480722][ T121] lr : hi3660_thermal_probe+0x38/0x74 [hisi_thermal] [ 9.480733][ T121] sp : ffffffc00aa13700 [ 9.480735][ T121] x29: ffffffc00aa13700 x28: 0000007ff8ae8531 x27: 00000000000008c0 [ 9.480743][ T121] x26: ffffffc00aa2a300 x25: ffffffc00aa2ab40 x24: 000000000000001d [ 9.480749][ T121] x23: ffffffc00a29d000 x22: 0000000000000000 x21: ffffff8001fa4a80 [ 9.480755][ T121] x20: 0000000000000001 x19: ffffff8001fa4a80 x18: ffffffc00a8810b0 [ 9.480761][ T121] x17: 000000007ab542f2 x16: 000000007ab542f2 x15: ffffffc00aa01000 [ 9.480767][ T121] x14: ffffffc00966f250 x13: ffffffc0b58f9000 x12: ffffffc00a055f10 [ 9.480771][ T123] ueventd: LoadWithAliases was unable to load cpu:type:aarch64:feature:,0000,0001,0002,0003,0004,0005,0006,0007,000B [ 9.480773][ T121] [ 9.480774][ T121] x11: 0000000000000000 x10: 0000000000000001 x9 : 0000000100000000 [ 9.480780][ T123] ueventd: [ 9.480780][ T121] x8 : ffffffc0044154cb x7 : 0000000000000000 x6 : 000000000000003f [ 9.480786][ T121] x5 : 0000000000000020 x4 : ffffffc0098db323 x3 : ffffff801aeb62c0 [ 9.480792][ T121] x2 : ffffff801aeb62c0 x1 : 0000000000000000 x0 : ffffff8001fa4c80 [ 9.480798][ T121] Call trace: [ 9.480801][ T121] hi3660_thermal_probe+0x6c/0x74 [hisi_thermal] [ 9.480813][ T121] hisi_thermal_probe+0xbc/0x284 [hisi_thermal] [ 9.480823][ T121] platform_probe+0xcc/0xf8 [ 9.480836][ T121] really_probe+0x19c/0x390 [ 9.480842][ T121] __driver_probe_device+0xc0/0xf0 [ 9.480848][ T121] driver_probe_device+0x4c/0x228 [ 9.480853][ T121] __driver_attach+0x110/0x1e0 [ 9.480858][ T121] bus_for_each_dev+0xa0/0xf4 [ 9.480864][ T121] driver_attach+0x2c/0x40 [ 9.480868][ T121] bus_add_driver+0x118/0x208 [ 9.480873][ T121] driver_register+0x80/0x124 [ 9.480878][ T121] __platform_driver_register+0x2c/0x40 [ 9.480884][ T121] init_module+0x28/0xfe4 [hisi_thermal] [ 9.480895][ T121] do_one_initcall+0xe4/0x334 [ 9.480902][ T121] do_init_module+0x50/0x1f0 [ 9.480909][ T121] load_module+0x1034/0x1204 [ 9.480914][ T121] __arm64_sys_finit_module+0xc8/0x11c [ 9.480919][ T121] invoke_syscall+0x60/0x130 [ 9.480926][ T121] el0_svc_common+0xbc/0x100 [ 9.480931][ T121] do_el0_svc+0x38/0xc4 [ 9.480937][ T121] el0_svc+0x34/0xc4 [ 9.480945][ T121] el0t_64_sync_handler+0x8c/0xfc [ 9.480950][ T121] el0t_64_sync+0x1a4/0x1a8 [ 9.480957][ T121] Code: 91132d08 b9001814 f9000013 f9000808 (d4200020) [ 9.480960][ T121] ---[ end trace 0000000000000000 ]--- [ 9.482201][ T72] dwmmc_k3 ff37f000.dwmmc1: IDMAC supports 64-bit address mode. [ 9.482225][ T72] dwmmc_k3 ff37f000.dwmmc1: Using internal DMA controller. [ 9.482232][ T72] dwmmc_k3 ff37f000.dwmmc1: Version ID is 270a [ 9.482261][ T72] dwmmc_k3 ff37f000.dwmmc1: DW MMC controller at irq 72,32 bit host data width,128 deep fifo [ 9.482406][ T117] cpu cpu0: EM: created perf domain [ 9.482677][ T118] ueventd: Loaded kernel module /vendor/lib/modules/btqca.ko [ 9.482745][ T118] ueventd: Loading module /vendor/lib/modules/hci_uart.ko with args '' [ 9.483117][ T117] cpu cpu4: EM: created perf domain [ 9.483767][ T117] ueventd: Loaded kernel module /vendor/lib/modules/cpufreq-dt.ko [ 9.484265][ T72] dwmmc_k3 ff37f000.dwmmc1: fifo-depth property not found, using value of FIFOTH register as default [ 9.484326][ T117] ueventd: LoadWithAliases was unable to load cpu:type:aarch64:feature:,0000,0001,0002,0003,0004,0005,0006,0007,000B [ 9.484335][ T117] ueventd: [ 9.486508][ T72] dwmmc_k3 ff37f000.dwmmc1: IDMAC supports 64-bit address mode. [ 9.486564][ T72] dwmmc_k3 ff37f000.dwmmc1: Using internal DMA controller. [ 9.486572][ T72] dwmmc_k3 ff37f000.dwmmc1: Version ID is 270a [ 9.486620][ T72] dwmmc_k3 ff37f000.dwmmc1: DW MMC controller at irq 72,32 bit host data width,64 deep fifo [ 9.488281][ T121] Kernel panic - not syncing: BRK handler: Fatal exception for the full serial console log, please check here: http://ix.io/4mLg Thanks, Yongqin Liu On Wed, 2 Nov 2022 at 06:34, Kees Cook wrote: > > Mark the devm_*alloc()-family of allocations with appropriate > __alloc_size()/__realloc_size() hints so the compiler can attempt to > reason about buffer lengths from allocations. > > Cc: Greg Kroah-Hartman > Cc: Rasmus Villemoes > Cc: Thomas Gleixner > Cc: Jason Gunthorpe > Cc: Nishanth Menon > Cc: Michael Kelley > Cc: Dan Williams > Cc: Won Chung > Signed-off-by: Kees Cook > Reviewed-by: Greg Kroah-Hartman > Link: https://lore.kernel.org/r/20221029074734.gonna.276-kees@kernel.org > --- > This is already in -next, but I'm including it here again to avoid any > confusion about this series landing (or being tested) via another tree. > --- > include/linux/device.h | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/include/linux/device.h b/include/linux/device.h > index 424b55df0272..5e4cd857e74f 100644 > --- a/include/linux/device.h > +++ b/include/linux/device.h > @@ -197,9 +197,9 @@ void devres_remove_group(struct device *dev, void *id); > int devres_release_group(struct device *dev, void *id); > > /* managed devm_k.alloc/kfree for device drivers */ > -void *devm_kmalloc(struct device *dev, size_t size, gfp_t gfp) __malloc; > +void *devm_kmalloc(struct device *dev, size_t size, gfp_t gfp) __alloc_size(2); > void *devm_krealloc(struct device *dev, void *ptr, size_t size, > - gfp_t gfp) __must_check; > + gfp_t gfp) __must_check __realloc_size(3); > __printf(3, 0) char *devm_kvasprintf(struct device *dev, gfp_t gfp, > const char *fmt, va_list ap) __malloc; > __printf(3, 4) char *devm_kasprintf(struct device *dev, gfp_t gfp, > @@ -226,7 +226,8 @@ static inline void *devm_kcalloc(struct device *dev, > void devm_kfree(struct device *dev, const void *p); > char *devm_kstrdup(struct device *dev, const char *s, gfp_t gfp) __malloc; > const char *devm_kstrdup_const(struct device *dev, const char *s, gfp_t gfp); > -void *devm_kmemdup(struct device *dev, const void *src, size_t len, gfp_t gfp); > +void *devm_kmemdup(struct device *dev, const void *src, size_t len, gfp_t gfp) > + __realloc_size(3); > > unsigned long devm_get_free_pages(struct device *dev, > gfp_t gfp_mask, unsigned int order); > -- > 2.34.1 > -- Best Regards, Yongqin Liu --------------------------------------------------------------- #mailing list linaro-android@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-android