Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3927287pxj; Mon, 24 May 2021 19:00:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzx4jtppCxwcSDro+RMvbEAe9bHrchgnaXdwQa/CYX3ve8aJkcxgrD9QO/OcvrzywpaTaNM X-Received: by 2002:a6b:8d0e:: with SMTP id p14mr16964974iod.30.1621908059534; Mon, 24 May 2021 19:00:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621908059; cv=none; d=google.com; s=arc-20160816; b=sk46dc/gKz92OeHPSriGiKLhZkxd4mfvhkcgxbXgpDUF4m7XCaa7BHKR6YggOt9SRP uyKcUn32WTneF9SvGh8q+FE2++iUDpQhysH/dk6AoP5hY0Yml44XeVq/7e93bTFDJoZL odnMYaakslDtAerbDNbGTs1w/8aKCi7qy/lQaNLy7YAfFDR9gLLbGgS3q0RDekRrxKz8 dJ/Upd8s2O83KwlOSKlNalsxkIXynma3T4nnSFNTRvKlaJ3qJgJzL91CxLT+cH221Q5j POYh7/mjAVbGu2dKPREI3OT3pWPlIiSEAR+tW5kVA/ihCrQKXPuKbwRom3AC0nvGMk1J 8h/g== 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=b9Vod4jvxokK9VdEVv9QbhmBpS7aCdhUUhHJ3yymm+s=; b=FWoCn5niljfiBDN/2lbHoXr8MH3OgI2hbcZYvEnQwcLHOcNGD/BJzQAejRXuaOt3ic KZyUqUt5uiZ++wYLv1oYaQyICr3J6O5exfKPhvekRW8fwtjToxVNg2JMBH48IrNajAk9 akd8oA61wHQAs8WzwhiWOEOtlmw2OMVVMTZC/oZzkJfqNHBgTcuYVVnTT0QQxJScNeFK NFLxRqB4PNjfDybqimb3IdDErIslas2qKIy6T7KLylyYNYUxl6vNcsIhtIx8CzlwTakc Emzi1TpdYMi9gju9YebpI0KUNxV7Pt+CZSRR+1djdr+jwm2xwNMIrJsOGMNAghhnbqo4 dOrw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=I8+KYs61; 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=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l3si17090088jad.55.2021.05.24.19.00.45; Mon, 24 May 2021 19:00:59 -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; dkim=pass header.i=@google.com header.s=20161025 header.b=I8+KYs61; 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=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229976AbhEYB7l (ORCPT + 99 others); Mon, 24 May 2021 21:59:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46894 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229550AbhEYB7j (ORCPT ); Mon, 24 May 2021 21:59:39 -0400 Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com [IPv6:2a00:1450:4864:20::330]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 22609C061574 for ; Mon, 24 May 2021 18:58:10 -0700 (PDT) Received: by mail-wm1-x330.google.com with SMTP id n17-20020a7bc5d10000b0290169edfadac9so2589617wmk.1 for ; Mon, 24 May 2021 18:58:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=b9Vod4jvxokK9VdEVv9QbhmBpS7aCdhUUhHJ3yymm+s=; b=I8+KYs61OaiJOPwxmunC06w7DyvSPZsRqWTTPv3iVx3kF3guF8NbEMG5+0s4ACgBSs 6nQ0beSnDxVqW79FbpaMaa46XVS4JwD30bFqVYa7OlFdxE+EPWGAGKTPHnPkSiQxeZVi SnPB5CUkT8J2SoVwhPqQIYewJVyaLDdrnYDYhJ7dXAyX0kef3+FAbafaSPs25JAwe3Nz jed0ObuvIxqTL2DQfxmeFaMxh5wl0B+1eR9KMeSy7zWNxqa/WZywhOv37SyxjGk2RJ41 +we8gbjjwuoSQ0UtSoQcoG0SivISyYI6furHZUXiZ0qr3iC40Cj+a6qG+kPhhSVyI9PT 5zoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=b9Vod4jvxokK9VdEVv9QbhmBpS7aCdhUUhHJ3yymm+s=; b=P0DTWlxNVD7D1fLaS2zHQ4kcltscD6Oeu/MP2AZGeonFyY9q4K6gI7QTNg1yanDA0R niuXVTVt+oMP/IIvpupU8jBMbf8gQndHHT9FbJ1RhwULbAc9PXnTy9Y82nX5Vg059gg3 9AUTsUbwjmeCcqJ+ZiGT2s56EpcM0oDZDjMH5McN2/o7ZbZxpfhyB7JPBjS42vULynPr J48CX51u1fW/crMTt3xvMyUYvqL4sJcQnNV3SsrzXaBfHxV9o8Jl9khphkyr9q5KkXlI y3eKt+PQECKIHASFriUVtYxECfrQcCxImpavLpCMbPhK68xsOzfKWT1ViL8tWi+czL5n JUUg== X-Gm-Message-State: AOAM533YEBkp0XY7Vgz4X7gLtFxRE7PqAP9DJJHta6WHbq3akJU9ip5Q l+6q2fuGSLxjMLxMrpAbEAtE034uwYNtjPa0pukjoQ== X-Received: by 2002:a1c:cc17:: with SMTP id h23mr21285858wmb.129.1621907888471; Mon, 24 May 2021 18:58:08 -0700 (PDT) MIME-Version: 1.0 References: <20210523001806.3927609-1-tpiepho@gmail.com> In-Reply-To: From: David Gow Date: Tue, 25 May 2021 09:57:57 +0800 Message-ID: Subject: Re: [PATCH] lib/math/rational.c: Fix divide by zero To: Randy Dunlap Cc: Daniel Latypov , Brendan Higgins , Andy Shevchenko , Trent Piepho , Linux Kernel Mailing List , andy@kernel.org, Andrew Morton , Oskar Schirmer , Yiyuan Guo Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, May 25, 2021 at 9:49 AM Randy Dunlap wrote: > > On 5/24/21 5:42 PM, David Gow wrote: > > On Tue, May 25, 2021 at 7:38 AM Daniel Latypov wrote: > >> > >> On Mon, May 24, 2021 at 4:30 PM Randy Dunlap wrote: > >>> > >>> On 5/24/21 3:56 PM, Daniel Latypov wrote: > >>>> On Mon, May 24, 2021 at 3:04 PM Randy Dunlap wrote: > >>>>> > >>>>> On 5/24/21 9:55 AM, Daniel Latypov wrote: > >>>>>> diff --git a/lib/math/Kconfig b/lib/math/Kconfig > >>>>>> index f19bc9734fa7..20460b567493 100644 > >>>>>> --- a/lib/math/Kconfig > >>>>>> +++ b/lib/math/Kconfig > >>>>>> @@ -15,3 +15,14 @@ config PRIME_NUMBERS > >>>>>> > >>>>>> config RATIONAL > >>>>>> bool > >>>>>> + > >>>>>> +config RATIONAL_KUNIT_TEST > >>>>>> + tristate "KUnit test for rational number support" if !KUNIT_ALL_TESTS > >>>>>> + # depends on KUNIT && RATIONAL # this is how it should work, but > >>>>>> + depends on KUNIT > >>>>>> + select RATIONAL # I don't grok kconfig enough to know why this > >>>>> > >>>>> Only to set the symbol CONFIG_RATIONAL. > >>>>> Then when 'make' descends into the lib/math/ subdir and looks at its Makefile, > >>>>> it will decide to build the binary rational.o. > >>>>> > >>>>> obj-$(CONFIG_RATIONAL) += rational.o > >>>>> > >>>> > >>>> Ack, I understand that much. > >>> > >>> Oh! Clearly I misunderstood the problem. > >>> > >>> I had to look thru 60 config files before I found one where CONFIG_RATIONAL > >>> was not set. > >>> > >>> And I'm still not sure, but I believe that it's because it has to be set > >>> by some other Kconfig entry doing a 'select' on it. > >>> > >>> Here are the kconfigs that select it (on i386, where I found it not set): > >>> > >>> - COMMON_CLK [=n] && !HAVE_LEGACY_CLK [=n] > >>> - SERIAL_8250_LPSS [=n] && TTY [=n] && HAS_IOMEM [=y] && SERIAL_8250 [=n] && PCI [=n] && (X86 [=y] || COMPILE_TEST [=y]) > >>> - SERIAL_8250_MID [=n] && TTY [=n] && HAS_IOMEM [=y] && SERIAL_8250 [=n] && PCI [=n] && (X86 [=y] || COMPILE_TEST [=y]) > >>> - SERIAL_IMX [=n] && TTY [=n] && HAS_IOMEM [=y] && (ARCH_MXC || COMPILE_TEST [=y]) > >>> - VIDEO_V4L2 [=n] && MEDIA_SUPPORT [=n] && (I2C [=y] || I2C [=y]=n) && VIDEO_DEV [=n] > >>> - SND_SOC_ROCKCHIP_PDM [=n] && SOUND [=n] && !UML && SND [=n] && SND_SOC [=n] && CLKDEV_LOOKUP [=n] && SND_SOC_ROCKCHIP [=n] > >>> - COMMON_CLK_QCOM [=n] && COMMON_CLK [=n] && OF [=y] && (ARCH_QCOM || COMPILE_TEST [=y]) > >>> > >>> but my test config has none of those enabled, so I cannot set RATIONAL. > >>> > >>> I guess the easiest solution is to have KUNIT or some sub-KUNIT test > >>> just select RATIONAL. > >> > >> Yeah, the easiest thing would be to keep the `select RATIONAL` that I > >> showed in the example patch. > >> > >> +David Gow +Brendan Higgins as they both particularly wanted to avoid > >> having any tests `select` their dependencies, however. > >> > > > > This came from a thread[1], and one of the causes behind it was not > > wanting to have KUNIT_ALL_TESTS enable things like filesystems and > > drivers which wouldn't otherwise be built. > > Ah yes, I recognize that thread. > > > Personally, I think that RATIONAL is probably an okay thing to select > > here: it's not as heavyweight as drivers/filesystems/etc, and our > > general guidance here is "avoid select where sensible to do so", not > > "don't use it under any circumstances". > > RATIONAL does not have a prompt string, so depending on it would not > be reliable. I.e., it is meant to be selected. Yeah: let's just select it then. It's better to have KUNIT_ALL_TESTS pull in something extra than to have tests we've no reliable way of enabling, IMHO. > > The other option would be to have a separate config entry which just > > selected RATIONAL, but even I think that's probably uglier, however > > nice it is for guaranteeing flexibility. > > Yes, that's even worse. > > > [1]: https://lore.kernel.org/linux-ext4/52959e99-4105-3de9-730c-c46894b82bdd@infradead.org/T/#t > > > >>> > >>>> My confusion is why this doesn't work: > >>>> > >>>> $ ./tools/testing/kunit/kunit.py run --kunitconfig /dev/stdin < >>>> CONFIG_KUNIT=y > >>>> CONFIG_RATIONAL=y > >>>> EOF > >>>> ... > >>>> ERROR:root:Provided Kconfig is not contained in validated .config. > >>>> Following fields found in kunitconfig, but not in .config: > >>>> CONFIG_RATIONAL=y > >>>> > >>>> What it's complaining about is that `make ARCH=um olddefconfig` is > >>>> leaving CONFIG_RATIONAL=y unset. > >>>> > >>>> Stripping out kunit.py, it's this: > >>>> > >>>> $ echo -e 'CONFIG_KUNIT=y\nCONFIG_RATIONAL=y' > .kunit/.config > >>>> $ make ARCH=um olddefconfig O=.kunit > >>>> $ grep RATIONAL .kunit/.config > >>>> > >>>> I'm not versed in Kconfig enough to know why CONFIG_RATIONAL=y is > >>>> getting removed. > >>>> > >>>>> > >>>>>> is necessary > >>>>>> + default KUNIT_ALL_TESTS > >>>>>> + help > >>>>>> + This builds unit tests for the rational number support. > >>>>>> + > >>>>>> + If unsure, say N. > > > -- > ~Randy >