Details
Details
- Reviewers
trasz - Group Reviewers
Linux Emulation - Commits
- rS283396: Implement rt_sigqueueinfo() system call.
Diff Detail
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
No Lint Coverage - Unit
No Test Coverage
Event Timeline
Comment Actions
Looks fine to me
| sys/compat/linux/linux_signal.c | ||
|---|---|---|
| 788–789 | Should we log and/or disallow this case? | |
| sys/compat/linux/linux_signal.c | ||
|---|---|---|
| 788–789 | No, RT signals. LINUX_SIG_VALID (707-708) validate user supplied sigcode. | |
| sys/compat/linux/linux_signal.c | ||
|---|---|---|
| 795 | I think you're missing a lot of access checks here. See sys/kern/kern_sig:sys_kill(); in particular the IN_CAPABILITY_MODE() and p_cansignal(). | |
| sys/compat/linux/linux_signal.c | ||
|---|---|---|
| 795 | Erm, ignore the IN_CAPABILITY_MODE(), but p_cansignal() should still be used, no? | |
| sys/compat/linux/linux_signal.c | ||
|---|---|---|
| 760 | Linux allows SI_ here. So, I plan to convert this later. | |
Comment Actions
I'd consider refactoring the code, to break this code into separate function:
linux_copyin_siginfo(...) {
error = copyin(args->info, &linfo, sizeof(linfo));
if (error != 0)
return (error);
ksiginfo_init(&ksi);
lsiginfo_to_ksiginfo(&linfo, &ksi, sig);}
... and then do something similar in a lot of other cases when you have this "copyin and convert", or "convert and copyout" pattern. Still, probably better leave this for another time.