[PATCH] sparc64: Fix copy_sigingo_to_user32()
The compat routine to copy over this data structure was not handling SI_POLL correctly, breaking various fcntl() variants in compat tasks. Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Родитель
dadeafdfc8
Коммит
9c7d3b3a6b
|
@ -192,10 +192,13 @@ int copy_siginfo_to_user32(compat_siginfo_t __user *to, siginfo_t *from)
|
||||||
err |= __put_user(from->si_uid, &to->si_uid);
|
err |= __put_user(from->si_uid, &to->si_uid);
|
||||||
break;
|
break;
|
||||||
case __SI_FAULT >> 16:
|
case __SI_FAULT >> 16:
|
||||||
case __SI_POLL >> 16:
|
|
||||||
err |= __put_user(from->si_trapno, &to->si_trapno);
|
err |= __put_user(from->si_trapno, &to->si_trapno);
|
||||||
err |= __put_user((unsigned long)from->si_addr, &to->si_addr);
|
err |= __put_user((unsigned long)from->si_addr, &to->si_addr);
|
||||||
break;
|
break;
|
||||||
|
case __SI_POLL >> 16:
|
||||||
|
err |= __put_user(from->si_band, &to->si_band);
|
||||||
|
err |= __put_user(from->si_fd, &to->si_fd);
|
||||||
|
break;
|
||||||
case __SI_RT >> 16: /* This is not generated by the kernel as of now. */
|
case __SI_RT >> 16: /* This is not generated by the kernel as of now. */
|
||||||
case __SI_MESGQ >> 16:
|
case __SI_MESGQ >> 16:
|
||||||
err |= __put_user(from->si_pid, &to->si_pid);
|
err |= __put_user(from->si_pid, &to->si_pid);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче