// autogenerated by syzkaller (http://github.com/google/syzkaller) #include #include #include #include #include #include #include #include static const char * sg_dev = "/dev/sg0"; int main() { const char *data = "\xb6\x3d\xb8\x5e\x1e\x8d\x22\x00\x00\x00\x00\x00\x00\x08\xaf\xd6\x1d" "\xcc\x43\x6a\xed\x5e\xd2\xbc\x70\x18\xce\xbc\x9b\x97\xae\x21\x91\x4d" "\x87\x2c\x67\x8c\xe2\x2c\x9b\x16\x0e\x96\xaa\x1f\xae\x1a"; int k, res, first_errno, prev_errno, first_err_index; int err_count = 0; int done_count = 0; bool got_1st_errno = false; for (k = 0; k < 10000; ++k) { int fd = open(sg_dev, O_RDWR); res = write(fd, data, 0x30); if (res < 0) { if (! got_1st_errno) { got_1st_errno = true; first_errno = errno; first_err_index = done_count + k; printf("First errno=%d [%s] index=%d\n", first_errno, strerror(first_errno), first_err_index); } ++err_count; } } done_count += k; sleep(10); for (k = 0; k < 10000; ++k) { int fd = open(sg_dev, O_RDWR); res = write(fd, data, 0x30); if (res < 0) { if (! got_1st_errno) { got_1st_errno = true; first_errno = errno; printf("First errno=%d [%s] index=%d\n", first_errno, strerror(first_errno), first_err_index); first_err_index = done_count + k; } ++err_count; } } done_count += k; sleep(10); for (k = 0; k < 10000; ++k) { int fd = open(sg_dev, O_RDWR); res = write(fd, data, 0x30); if (res < 0) ++err_count; } done_count += k; sleep(10); for (k = 0; k < 10000; ++k) { int fd = open(sg_dev, O_RDWR); res = write(fd, data, 0x30); if (res < 0) ++err_count; } done_count += k; sleep(10); for (k = 0; k < 10000; ++k) { int fd = open(sg_dev, O_RDWR); res = write(fd, data, 0x30); if (res < 0) { prev_errno = errno; ++err_count; } } done_count += k; sleep(10); printf("done_count=%d, err_count=%d, last_errno=%d [%s]\n", done_count, err_count, prev_errno, strerror(prev_errno)); return 0; }