| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * Author: SeongJae Park <sj@kernel.org> |
| */ |
| |
| #include <fcntl.h> |
| #include <stdlib.h> |
| #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); |
| char buf[25]; |
| int ret; |
| |
| printf("%s %s\n", __func__, file); |
| if (filedesc < 0) { |
| fprintf(stderr, "failed opening %s\n", file); |
| exit(1); |
| } |
| |
| write(filedesc, "", 0xfffffffful); |
| perror("after write: "); |
| ret = read(filedesc, buf, 0xfffffffful); |
| perror("after read: "); |
| close(filedesc); |
| } |
| |
| #pragma GCC diagnostic pop |
| |
| int main(int argc, char *argv[]) |
| { |
| if (argc != 2) { |
| fprintf(stderr, "Usage: %s <file>\n", argv[0]); |
| exit(1); |
| } |
| write_read_with_huge_count(argv[1]); |
| |
| return 0; |
| } |