| /* |
| * Author: Jeff Moyer |
| * |
| * Description: Pass a non-writable context pointer to io_setup to see if |
| * the kernel deals with it correctly. In the past, the reference counting |
| * in this particular error path was off and this operation would cause an |
| * oops. |
| * |
| * This is a destructive test. |
| */ |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <sys/mman.h> |
| #include <libgen.h> |
| #include <libaio.h> |
| |
| int |
| main(int __attribute__((unused)) argc, char **argv) |
| { |
| void *addr; |
| |
| addr = mmap(NULL, 4096, PROT_READ, MAP_SHARED|MAP_ANONYMOUS, 0, 0); |
| if (!addr) { |
| perror("mmap"); |
| exit(1); |
| } |
| io_setup(1, addr /* un-writable pointer */); |
| |
| printf("%s: Success!\n", basename(argv[0])); |
| return 0; |
| } |