From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from eastern.birch.relay.mailchannels.net (eastern.birch.relay.mailchannels.net [23.83.209.55]) by sourceware.org (Postfix) with ESMTPS id 87D593857C7F for ; Tue, 29 Sep 2020 13:50:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 87D593857C7F X-Sender-Id: dreamhost|x-authsender|siddhesh@gotplt.org Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id BB7B77E1460; Tue, 29 Sep 2020 13:50:25 +0000 (UTC) Received: from pdx1-sub0-mail-a98.g.dreamhost.com (100-96-21-48.trex.outbound.svc.cluster.local [100.96.21.48]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 291CB7E1243; Tue, 29 Sep 2020 13:50:23 +0000 (UTC) X-Sender-Id: dreamhost|x-authsender|siddhesh@gotplt.org Received: from pdx1-sub0-mail-a98.g.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384) by 0.0.0.0:2500 (trex/5.18.10); Tue, 29 Sep 2020 13:50:25 +0000 X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|siddhesh@gotplt.org X-MailChannels-Auth-Id: dreamhost X-Versed-Cold: 447a07e8761e4b0f_1601387425490_75703482 X-MC-Loop-Signature: 1601387425490:259862474 X-MC-Ingress-Time: 1601387425490 Received: from pdx1-sub0-mail-a98.g.dreamhost.com (localhost [127.0.0.1]) by pdx1-sub0-mail-a98.g.dreamhost.com (Postfix) with ESMTP id BE225BA222; Tue, 29 Sep 2020 06:50:22 -0700 (PDT) Received: from [192.168.1.97] (unknown [123.252.202.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: siddhesh@gotplt.org) by pdx1-sub0-mail-a98.g.dreamhost.com (Postfix) with ESMTPSA id 66568BA21F; Tue, 29 Sep 2020 06:50:19 -0700 (PDT) Subject: Re: V4 [PATCH] Set tunable value as well as min/max values To: "H.J. Lu" Cc: Florian Weimer , "H.J. Lu via Libc-alpha" References: <20200918160709.949608-1-hjl.tools@gmail.com> <20200918160709.949608-3-hjl.tools@gmail.com> <87eemm6n37.fsf@oldenburg2.str.redhat.com> <42e48ec7-4b11-387c-eaf0-50bc564dbca0@sourceware.org> <565f21f3-0630-2d4e-dff4-6cda90533fb5@gotplt.org> X-DH-BACKEND: pdx1-sub0-mail-a98 From: Siddhesh Poyarekar Autocrypt: addr=siddhesh@sourceware.org; keydata= mQENBFMAZNMBCACeatEKl6YY9iEVxzS64bPbvJsA1mLE2XFWmKXyYzm58dFqPMa0OQQTKCxj FCOrc+LD2KtmypttcahKnk5Lk1lNU/lV2hCuR7jJ37sL+/TFQuMMgsLPED6XU4/AYK3VUJvg GYLBnMVfpAGYLB5rnPvhFNx0r2KItO/CfiSEyD4g1Wu26SUAXGOp5hbSyBRGhju+8YJlhHBB jn3vZfw7IpwAWDVjK0crqMhGDXoZwK+ADUFY5NERAkT3Lb7d11F6+W4558WQZCYIWa3rZ62d 986OE7+7xKmJUcLLWvlv5spgUmvotZ4DMzaKba+waY5ygXdGIpm5seVIEUCTaBIe6QVLABEB AAG0RVNpZGRoZXNoIFBveWFyZWthciAoaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZykgPHNpZGRo ZXNoQHNvdXJjZXdhcmUub3JnPokBOAQTAQIAIgUCV7TK9wIbAwYLCQgHAwIGFQgCCQoLBBYC AwECHgECF4AACgkQecQ9+/HPIYenaAf+PWhZtNrSQooFzuza1kYO3rI3UE+uoPPy2GGtjt6B 3n+sgAkprW3SVqW2eWkXkZXnWHLCNVlbS4FBznIa7KXilTuilgAOXBTA40YTD9AK4cci+Cg6 s1PQB6aN7fW2ARijXx/Q392tK1ZJ5CAfTchDTwCaWyTnazQ9Ew1l4cjhyxrBQulrhDLULnX0 ijDoShaskjdMWUFCpW9dZ9jE+O/YKpcO6P1Dw8tYA7bLBvsxvQw+9l5Kt5W887YTP3u5XXAf HTEaFS5fXtV2S6Dny/0QFf8/VMR3s0Y42A1evRD8cyrII/iHdwM5mPV3kqlHg1l9e8+gEVdJ oeLhnjxK4hJjwrkBDQRTAGTTAQgAoQtIhKUn2vPe1IE82SnKrAg+fj/9kG4Q0lB8hYhZgz2v vawFEdmCKKWw3sruDoRru8tRWC/n5YicTg9YVBqpRJsy5tOOyGdogAh5JTSuyXBFGq7YH0eZ LyZqsH5Rh1D4yw9UQiesHy6ugV/wmHuH7Y6qzYwpQyxrKgXJCRW3CHccj8AxOSYrqK6fcCKQ 4r4n1YtDHZCp/58uNjn9kiNujBt3wYrcHiHiRQ9t5QjlM2DrFwpXLFU8zLwdrN9oPCVQd+HT srRQVa1oW7D2/e2VqJ45MsfQPRwFfJhMCqCzsLrpzK3HD5Cvr/64drwwxEQNDBMQTDCJyTeH SH68iEKxXQARAQABiQEfBBgBAgAJAhsMBQJU6rPfAAoJEHnEPfvxzyGH9TMH/RDXegv9pLyS b2xc5rwzWuhDr01SmqkwQ4YFY7mdorzBnZAqHgPTkN81rvJPkWA8sj5riR06BZtbZ+IT/Axg 4yK+OgW9452XM+mx7Dqfarn9y+imymuIIYlajNOTC/V2/2B9MoHt0Mm34gJ1puntqiG82LnF 5mAzgbEKI7Wt+vQmfs0BHcvm2lCxUPh4NNr2ODSqr8SIX64tAfzYPpuzG1L9et7tv+xMoreM Tqy2G6LrjDsXdfkzWrCTxcKyoI0DVnZz7NaQsYfhl4H9GvFqm7QfT9MCEEG1sOjrrkZpFvc1 IrMbislKNdIRBziudr9jv+zdz24HTKN3JdfTyacfNU4= Message-ID: <8046ee6e-b0e9-405a-b266-3f28ad75165d@sourceware.org> Date: Tue, 29 Sep 2020 19:20:11 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-VR-OUT-STATUS: OK X-VR-OUT-SCORE: -100 X-VR-OUT-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedujedrvdekgdejtdcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucggtfgfnhhsuhgsshgtrhhisggvpdfftffgtefojffquffvnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpefuvfhfhffkffgfgggjtgfgsehtjeertddtfeejnecuhfhrohhmpefuihguughhvghshhcurfhohigrrhgvkhgrrhcuoehsihguughhvghshhesshhouhhrtggvfigrrhgvrdhorhhgqeenucggtffrrghtthgvrhhnpeekjeejudekhfeigfeifffhgffhteegkeduteeuuddvkeejveeugedukeeiveegvdenucfkphepuddvfedrvdehvddrvddtvddrudejvdenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhhouggvpehsmhhtphdphhgvlhhopegludelvddrudeikedruddrleejngdpihhnvghtpeduvdefrddvhedvrddvtddvrddujedvpdhrvghtuhhrnhdqphgrthhhpefuihguughhvghshhcurfhohigrrhgvkhgrrhcuoehsihguughhvghshhesshhouhhrtggvfigrrhgvrdhorhhgqedpmhgrihhlfhhrohhmpehsihguughhvghshhesshhouhhrtggvfigrrhgvrdhorhhgpdhnrhgtphhtthhopehhjhhlrdhtohholhhssehgmhgrihhlrdgtohhm X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00, JMQ_SPF_NEUTRAL, KAM_DMARC_NONE, KAM_DMARC_STATUS, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NEUTRAL, TXREP autolearn=no autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Sep 2020 13:50:28 -0000 On 29/09/20 18:00, H.J. Lu wrote: > Here is the updated patch with TUNABLE_SET_BOUNDS_IF_VALID. > > OK for master? I don't think TUNABLE_SET_BOUNDS_IF_VALID is doing what it intends to do. > +#define TUNABLE_SET_BOUNDS_IF_VALID(__cur, __maxp, __minp, __type) \ minp and maxp are switched around. > +({ \ > + __type min = __minp ? *((__type *) __minp) : (__cur)->type.min; \ > + __type max = __maxp ? *((__type *) __maxp) : (__cur)->type.max; \ > + if (__minp) \ > + { \ > + if (__maxp) \ > + { \ > + if (max > min) \ > + { \ > + (__cur)->type.min = min; \ > + (__cur)->type.max = max; \ > + } \ When both minp and maxp are specified, it checks if they're sane with respect to each other but it should also check whether the range they describe is a *subset* of (__cur)->type.min and (__cur)->type.max. > + } \ > + else if (max > min) \ > + (__cur)->type.min = min; \ You also need to make sure that (__cur)->type.min < min to ensure a more restrictive range. > + } \ > + else if (max > min) \ > + (__cur)->type.max = min; \ I did not understand this one. Basically, this is what it should look like: if (__minp != NULL && *__minp <= *__maxp && *__minp >= (__cur)->type.min && *__minp <= (__cur)->type.max) (__cur)->type.min = *__minp; if (__maxp != NULL && *__minp <= *_maxp && *__maxp >= (__cur)->type.min && *__maxp <= (__cur)->type.max) (__cur)->type.max = *maxp; You could collapse some of these conditions if we assume that maxp and minp are always either NULL or not NULL together. Siddhesh