Dmitry Vyukov wrote:
Takashi has already fixed this. See this thread: https://groups.google.com/forum/#!searchin/syzkaller-bugs/%22INFO$3A$20rcu$2...
Yes, I noticed it just before I post this. But the reason I posted this anyway is that I feel that there is some other bug revealed by this reproducer. How can Takashi' patch explain my observation (with linux-next-20180406) ?
/* Hits the stall */ int main(int argc, char *argv[]) { const int fd = open("/dev/dsp1", O_RDWR); int frag = (0 << 16) | 0; char buf[48] = { }; unshare(CLONE_NEWNS); ioctl(fd, SNDCTL_DSP_SETFRAGMENT, &frag); write(fd, buf, sizeof(buf)); return 0; }
/* Does not hit the stall */ int main(int argc, char *argv[]) { const int fd = open("/dev/dsp1", O_RDWR); int frag = (0 << 16) | 0; char buf[48] = { }; ioctl(fd, SNDCTL_DSP_SETFRAGMENT, &frag); write(fd, buf, sizeof(buf)); return 0; }
/* Does not hit the stall */ int main(int argc, char *argv[]) { const int fd = open("/dev/dsp1", O_RDWR); int frag = (0 << 16) | 0; char buf[48] = { }; unshare(CLONE_NEWNS); ioctl(fd, SNDCTL_DSP_SETFRAGMENT, &frag); write(fd, buf, sizeof(buf)); close(fd); return 0; }