mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: David Laight <David.Laight@ACULAB.COM>
To: 'Dan Carpenter' <dan.carpenter@linaro.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Linus Torvalds" <torvalds@linux-foundation.org>,
	'Andy Shevchenko' <andriy.shevchenko@linux.intel.com>,
	'Andrew Morton' <akpm@linux-foundation.org>,
	"'Matthew Wilcox (Oracle)'" <willy@infradead.org>,
	'Christoph Hellwig' <hch@infradead.org>,
	"'Jason A. Donenfeld'" <Jason@zx2c4.com>
Subject: RE: [PATCH next v4 0/5] minmax: Relax type checks in min() and max().
Date: Fri, 12 Jan 2024 12:16:00 +0000	[thread overview]
Message-ID: <97e6fe43318b4cad865feadace402880@AcuMS.aculab.com> (raw)
In-Reply-To: <918545c4-0870-4ea5-ab11-53eaed91aec7@moroto.mountain>

From: Dan Carpenter
> Sent: 12 January 2024 09:13
> 
> I've often wondered why so many people use min_t(int, size, limit) when
> they really do not want negative sizes...  Is there a performance reason?
> git grep 'min_t(int,' says there are 872 instances of this.  Probably
> some do want negatives but it's a quite small percent.

But you really don't a negative 'size' converted to a large
unsigned value above the limit - that would be worse.
All the type checking is there to stop that happening.

Even with my changes min(int_var, sizeof()) is a compile error.
To do otherwise would really requite the sizeof() to be converted
to int - leaving the other type alone.
Easiest done by using 'int' instead of 'typeof(y)' for the
local variable inside cmp_once().

However Linus didn't like that change so I removed it from the
version that got committed.
It would also bloat the expansion even more.
That could be reduced by expecting min(var, const) not min(const, var)
and only doing all the constant checks on the second argument.

FWIW min_t() should really skip all the type checks.
Once both value have been cast the 'same type' test will pass.

	David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)


  reply	other threads:[~2024-01-12 12:16 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-18  8:14 David Laight
2023-09-18  8:16 ` [PATCH next v4 1/5] minmax: Add umin(a, b) and umax(a, b) David Laight
2024-01-12 12:49   ` Dan Carpenter
2024-01-12 13:40     ` David Laight
2024-01-12 14:03       ` Dan Carpenter
2024-01-12 14:26         ` David Laight
2024-01-18 10:30           ` Dan Carpenter
2023-09-18  8:17 ` [PATCH next v4 2/5] minmax: Allow min()/max()/clamp() if the arguments have the same signedness David Laight
2023-09-18  8:17 ` [PATCH next v4 3/5] minmax: Fix indentation of __cmp_once() and __clamp_once() David Laight
2023-09-18  8:18 ` [PATCH next v4 4/5] minmax: Allow comparisons of 'int' against 'unsigned char/short' David Laight
2023-09-18  8:19 ` [PATCH next v4 5/5] minmax: Relax check to allow comparison between unsigned arguments and signed constants David Laight
2023-09-27 17:30 ` [PATCH next v4 0/5] minmax: Relax type checks in min() and max() Andrew Morton
2023-09-28  8:10   ` David Laight
2024-01-08 11:46 ` Jiri Slaby
2024-01-08 13:34   ` David Laight
2024-01-08 18:19   ` Linus Torvalds
2024-01-08 20:04     ` Linus Torvalds
2024-01-08 21:11       ` Linus Torvalds
2024-01-09  0:39         ` [PATCH next v4 0/5] minmax: Relax type checks in min() and max().^[[C John Stoffel
2024-01-09  6:54         ` [PATCH next v4 0/5] minmax: Relax type checks in min() and max() Jiri Slaby
2024-01-10  6:17         ` Stephen Rothwell
2024-01-10  9:03           ` David Laight
2024-01-10 19:35           ` Linus Torvalds
2024-01-10 22:58             ` David Laight
2024-01-20 21:33               ` Linus Torvalds
2024-01-21 22:18                 ` David Laight
2024-01-09  9:35     ` David Laight
2024-01-09  9:41     ` David Laight
2024-01-09 12:09     ` Kalle Valo
2024-01-19  7:14     ` Jiri Slaby
2024-01-19  8:23       ` Hans Verkuil
2024-01-19  9:14       ` David Laight
2024-01-12  9:13 ` Dan Carpenter
2024-01-12 12:16   ` David Laight [this message]
2024-01-12 12:40     ` Dan Carpenter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=97e6fe43318b4cad865feadace402880@AcuMS.aculab.com \
    --to=david.laight@aculab.com \
    --cc=Jason@zx2c4.com \
    --cc=akpm@linux-foundation.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=dan.carpenter@linaro.org \
    --cc=hch@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=willy@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®