On Sun, 13 Nov 2022 08:38:45 +0800 Rong Tao <rtoax@xxxxxxxxxxx> wrote: > From: Rong Tao <rongtao@xxxxxxxx> > > When testing overflow and overread, there is no need to keep unnecessary > compilation warnings, we should simply ignore them. > > The motivation for this patch is to eliminate the compilation warning, > maybe one day we will compile the kernel with "-Werror -Wall", at which > point this compilation warning will turn into a compilation error, we > should fix this error in advance. > > How to reproduce the problem (with gcc-11.3.1): > > $ make -C tools/testing/selftests/ > ... > warning: ‘write’ reading 4294967295 bytes from a region of size 1 > [-Wstringop-overread] > warning: ‘read’ writing 4294967295 bytes into a region of size 25 > overflows the destination [-Wstringop-overflow=] > > "-Wno-stringop-overread" is supported at least in gcc-11.1.0. > > Link: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=d14c547abd484d3540b692bb8048c4a6efe92c8b > Signed-off-by: Rong Tao <rongtao@xxxxxxxx> Reviewed-by: SeongJae Park <sj@xxxxxxxxxx> Thank you for fixing this old problem! Thanks, SJ > --- > tools/testing/selftests/damon/huge_count_read_write.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/tools/testing/selftests/damon/huge_count_read_write.c b/tools/testing/selftests/damon/huge_count_read_write.c > index ad7a6b4cf338..a6fe0689f88d 100644 > --- a/tools/testing/selftests/damon/huge_count_read_write.c > +++ b/tools/testing/selftests/damon/huge_count_read_write.c > @@ -8,6 +8,13 @@ > #include <unistd.h> > #include <stdio.h> > > +#pragma GCC diagnostic push > +#if __GNUC__ >= 11 && __GNUC_MINOR__ >= 1 > +/* Ignore read(2) overflow and write(2) overread compile warnings */ > +#pragma GCC diagnostic ignored "-Wstringop-overread" > +#pragma GCC diagnostic ignored "-Wstringop-overflow" > +#endif > + > void write_read_with_huge_count(char *file) > { > int filedesc = open(file, O_RDWR); > @@ -27,6 +34,8 @@ void write_read_with_huge_count(char *file) > close(filedesc); > } > > +#pragma GCC diagnostic pop > + > int main(int argc, char *argv[]) > { > if (argc != 2) { > -- > 2.31.1 > >