Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp1248714rwb; Fri, 7 Oct 2022 09:57:37 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4OrQhP1qbnvQeeeiFH2VhpHo0G8l9k0rjLyio1mMaMZOn+gVCqt7s0l8v5MrGZYHnoFb4a X-Received: by 2002:a17:90b:4f85:b0:20a:e71b:9f09 with SMTP id qe5-20020a17090b4f8500b0020ae71b9f09mr6704793pjb.66.1665161857183; Fri, 07 Oct 2022 09:57:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1665161857; cv=none; d=google.com; s=arc-20160816; b=wvsCbsZ0qDwsvYYaN7BZN0+lCQjOUF7q4AOMzW2IW1C3yEw4fXMFP36PlCwXhYKcXK AA8slaQsg0kNcexQ/G7amT1qyVzzDd+e6JjfIZUu14MMnq0mJ5TLbsa7Wn9rpAH42CGs YrpMghF5zwLUmuuIT/FcmEzUCnJjxopf8u5VqmITJggd4UP4AxzHxNjdkuZEiZavJwAT 0ez6HCg6Zj/NS7x9rZUMYdrjpeRZK+nj+n2kw3t7gSnTaxSklum4H5wsSyRJCT1wsjaP /cFYwknm9GT55iG3pxGvnByxUiRuIKn+063I+m0c/wOKYHmtGJl5SKmO9AVsVx+7JLvc IMIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=9cdGYVpBBAAKU3yol2FW15QDNHv3yCmJl4fQ+xSV9nc=; b=pKbNlU9q6IadWl4KZHVi3TwaB1/Ito3VSG4gyQ0vqFhjy5pj68vSJRW2sFaUeQAU20 Ix0HwYUOPTZIHCrGy7trE2ACMalsOuYXv7HKeqRCcp7S5eEmrxj8pc3UbodpQCuxxc6V X0TXzTdezCBk4CCRpsyr6aUtLQc1RvZbiLnrqohKbOD3k8lCQt11U0jKDnTuHGqUsSn7 trlSeS8KZFK98zEBjLrIQ1ZnXylR5hPC1vV5PnovNVUXql5i60qy8Yc196kTD1otGTLH xVRinzsLmQIH40zVose5P1A/QGCb+kqGWrUcgOqSQeLpK6CuksNj8CU5oCeTe6ZSEoCv yOkg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=nLpYCuOR; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q10-20020a170902f78a00b00179f1470b55si2659418pln.419.2022.10.07.09.57.21; Fri, 07 Oct 2022 09:57:37 -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; dkim=pass header.i=@gmail.com header.s=20210112 header.b=nLpYCuOR; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229825AbiJGQT3 (ORCPT + 99 others); Fri, 7 Oct 2022 12:19:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41492 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229997AbiJGQTV (ORCPT ); Fri, 7 Oct 2022 12:19:21 -0400 Received: from mail-qv1-xf2c.google.com (mail-qv1-xf2c.google.com [IPv6:2607:f8b0:4864:20::f2c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5056D12BB82; Fri, 7 Oct 2022 09:19:21 -0700 (PDT) Received: by mail-qv1-xf2c.google.com with SMTP id h10so3362940qvq.7; Fri, 07 Oct 2022 09:19:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=9cdGYVpBBAAKU3yol2FW15QDNHv3yCmJl4fQ+xSV9nc=; b=nLpYCuORWPCCcxWfmPrbQFT4nbvFPF3TjcIxwzr39H9a/3yN9yoCvHNFSRhfxmIUx3 SsRv09da1cL7GXJLCeZNXa8jIBXuz7AVGywfRawnrte7l4hBnGVVGbKhAUuQlmbr+Ln+ rSESapqZAbaTyaj9Xg8bOH/1r0EE48oMR2RmbpbcGQIdeYguilqj7gtIGJ4xNdvzjONE TeK/A4pZqMrSvHdLL5LoNkGOqZtIORcVcJCp5/CbUM52kRNOTLkJCO16oMlj3Ti37O1x +cF6A4V0A1CCDcocTbyuT3qTBN+lEww92wKI4JjwYxs8EJxKVhX1qfiL8rzIoSoT5w8j cnGQ== 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=9cdGYVpBBAAKU3yol2FW15QDNHv3yCmJl4fQ+xSV9nc=; b=mhUpR27Knjpdgl7NjRN1gLUwt63AcFtGHPzGLlEnOkCJpBkRirgq/tplNudQtCeiYv OQMm1kTbbe9y88JxNFXpUlijSA6FRYeM5rfG2EhrmHmGAmQ/vzNw+E2WhXsGX9VeBTjx 5RIngiMci6fPptayTwJsFmgKsBgV8uPQ/PWeFpcTvRGP8gFkUqBQgdbnIbs28C4NRTDF ZikH2FleABBdnn5Lffr/Tqc/Q914GkY7lbC8r9LLyDn9IEDCqzgAmaV/YYiXOdFJ/pk0 AF95ALrnkFhpT1/vA+QbxnL378s80N//GnIU8V7sTGYFRu1y5aRepgAQIdi0QQhBlQBH fbmg== X-Gm-Message-State: ACrzQf0CAeV5nSK9Jd4xf+BWlh7mFWMRMcyaJlEJ/HHL6go9JJDcnylA xaB3ZgyKYacnrOGZy4Vx3SyRQnCPF3v1D3BmyVA= X-Received: by 2002:a05:6214:29ee:b0:4b1:c1d2:6635 with SMTP id jv14-20020a05621429ee00b004b1c1d26635mr4911427qvb.82.1665159560213; Fri, 07 Oct 2022 09:19:20 -0700 (PDT) MIME-Version: 1.0 References: <20221007145641.3307075-1-jjhiblot@traphandler.com> <20221007145641.3307075-2-jjhiblot@traphandler.com> In-Reply-To: <20221007145641.3307075-2-jjhiblot@traphandler.com> From: Andy Shevchenko Date: Fri, 7 Oct 2022 19:18:44 +0300 Message-ID: Subject: Re: [PATCH v4 1/6] devres: provide devm_krealloc_array() To: Jean-Jacques Hiblot , Bartosz Golaszewski Cc: lee.jones@linaro.org, pavel@ucw.cz, robh+dt@kernel.org, sven.schwermer@disruptive-technologies.com, krzysztof.kozlowski+dt@linaro.org, johan+linaro@kernel.org, marijn.suijten@somainline.org, bjorn.andersson@linaro.org, jacek.anaszewski@gmail.com, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham 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 +Cc: Bart who learnt realloc() specifics hard way Thanks for doing this! On Fri, Oct 7, 2022 at 6:13 PM Jean-Jacques Hiblot wrote: > > Implement the managed variant of krealloc_array(). > This internally uses devm_krealloc() and as such is usable with all memory > allocated by devm_kmalloc() (or devres functions using it implicitly like > devm_kmemdup(), devm_kstrdup() etc.) Missed grammatical period at the end. > Managed realloc'ed chunks can be manually released with devm_kfree(). ... > { > return devm_kmalloc_array(dev, n, size, flags | __GFP_ZERO); > } Missed blank line? > +static inline void *devm_krealloc_array(struct device *dev, > + void *p, > + size_t new_n, > + size_t new_size, > + gfp_t flags) > +{ > + size_t bytes; > + > + if (unlikely(check_mul_overflow(new_n, new_size, &bytes))) > + return NULL; I'm not sure it is what we want, but I have read the man realloc and found this: ... reallocarray() fails safely in the case where the multiplication would overflow. If such an overflow occurs, reallocarray() returns NULL, sets errno to ENOMEM, and leaves the original block of memory unchanged. So, perhaps you can add that this behaviour mimics reallocarray()? > + return devm_krealloc(dev, p, bytes, flags); > +} ... All comments are minor, feel free to add Reviewed-by: Andy Shevchenko -- With Best Regards, Andy Shevchenko