Re: + fix-mult_frac-multiple-argument-evaluation-bug.patch added to mm-nonmm-unstable branch

Alexey Dobriyan
2023-05-23T08:48:33Z

On Tue, May 23, 2023 at 01:45:40AM +0200, Thomas Gleixner wrote:
> On Mon, May 22 2023 at 14:15, Andrew Morton wrote:
> > ------------------------------------------------------
> > From: Alexey Dobriyan <adobriyan@gmail.com>
> > Subject: include/linux/math.h: fix mult_frac() multiple argument evaluation bug
> > Date: Sat, 20 May 2023 21:25:19 +0300
> >
> > mult_frac() evaluates _all_ arguments multiple times in the body.
>
> I'm not opposed to the patch, but to the description.
>
> Multiple evaluation is not a bug per se.

It is kind of a bug if a macro pretends to be a function and is spelled in
lowercase.

> Unless there is a reasonable explanation for the alleged bug this is
> just a cosmetic exercise.

Most usages looks OK, and compiler tend to merge loads so even more
usages are OK. But formally this is not OK:

static inline unsigned long vfs_pressure_ratio(unsigned long val)
{
return mult_frac(val, sysctl_vfs_cache_pressure, 100);
}

> Changelogs have to be self explanatory and if the shortlog, aka
> $subject, claims "bug" then there has to be a reasonable explanation
> what the actual bug is.
>
> Seriously.
>
> All this is documented, but obviously documention for changelogs and the
> acceptance of patches is just there to be ignored, right?

I don't want to return to kindergarten and document problem which every
C programmer learns exploring MIN(a, b).