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.