On Mon, Dec 9, 2024 at 12:26 PM Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> wrote: > > On Mon, Dec 09, 2024 at 09:02:24AM -0800, Namhyung Kim wrote: > > Hello, > > > > On Mon, Dec 9, 2024 at 5:42 AM Kuan-Wei Chiu <visitorckw@xxxxxxxxx> wrote: > > > > > > The comparison function cmp_profile_data() violates the C standard's > > > requirements for qsort() comparison functions, which mandate symmetry > > > and transitivity: > > > > > > * Symmetry: If x < y, then y > x. > > > * Transitivity: If x < y and y < z, then x < z. > > > > > > When v1 and v2 are equal, the function incorrectly returns 1, breaking > > > symmetry and transitivity. This causes undefined behavior, which can > > > lead to memory corruption in certain versions of glibc [1]. > > > > > > Fix the issue by returning 0 when v1 and v2 are equal, ensuring > > > compliance with the C standard and preventing undefined behavior. > > > > > > Link: https://www.qualys.com/2024/01/30/qsort.txt [1] > > > Fixes: 0f223813edd0 ("perf ftrace: Add 'profile' command") > > > Fixes: 74ae366c37b7 ("perf ftrace profile: Add -s/--sort option") > > > Cc: stable@xxxxxxxxxxxxxxx > > > Signed-off-by: Kuan-Wei Chiu <visitorckw@xxxxxxxxx> > > > > Reviewed-by: Namhyung Kim <namhyung@xxxxxxxxxx> > > I'm assuming you'll pick this for perf-tools, ok? > > Reviewed-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> Yep, sure. Thanks, Namhyung