[Bug 236714] Clang problem with rctl(8)
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236714 Mateusz Guzik changed: What|Removed |Added Status|New |Closed Resolution|--- |FIXED Assignee|toolch...@freebsd.org |m...@freebsd.org -- You are receiving this mail because: You are the assignee for the bug. ___ freebsd-toolchain@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"
[Bug 236714] Clang problem with rctl(8)
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236714 --- Comment #12 from Mateusz Guzik --- It is not being ignored. There is non-zero garbage in an area not written to by sysctl, which makes the zero comparison fail. diff --git a/usr.bin/rctl/rctl.c b/usr.bin/rctl/rctl.c index 74073c13207e..8fb9e862aee8 100644 --- a/usr.bin/rctl/rctl.c +++ b/usr.bin/rctl/rctl.c @@ -378,12 +378,15 @@ print_rules(char *rules, int hflag, int nflag) static void enosys(void) { - int error, racct_enable; + int error, racct_enable = ~(0); size_t racct_enable_len; + + printf("%x\n", racct_enable); racct_enable_len = sizeof(racct_enable); error = sysctlbyname("kern.racct.enable", _enable, _enable_len, NULL, 0); + printf("%x\n", racct_enable); if (error != 0) { if (errno == ENOENT) Results in: ff00 a.out: failed to show rules for '::': Function not implemented -- You are receiving this mail because: You are the assignee for the bug. ___ freebsd-toolchain@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"
[Bug 236714] Clang problem with rctl(8)
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236714 --- Comment #11 from Edward Tomasz Napierala --- Patch looks good, thank you! What about the underlying issue, which is sysctl(3) silently failing when it receives an improperly sized buffer? Would it be feasible to make it return an error, so it's easier to fix next time it happens? -- You are receiving this mail because: You are the assignee for the bug. ___ freebsd-toolchain@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"
[Bug 236714] Clang problem with rctl(8)
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236714 --- Comment #8 from Mateusz Guzik --- I thought markj wanted to handle a general case. I did not check if anything depends on the affected sysctl in userspace, so that's my bad. However, since the change is only in current and the tool can be modified I don't think there is much use of adding aforementioned support there. -- You are receiving this mail because: You are the assignee for the bug. ___ freebsd-toolchain@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"
[Bug 236714] Clang problem with rctl(8)
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236714 Konstantin Belousov changed: What|Removed |Added CC||k...@freebsd.org --- Comment #7 from Konstantin Belousov --- What is the problem checking for exactly old or new buffer size ? Look e.g. at the sysctl_bufspace() in vfs_bio.c. -- You are receiving this mail because: You are the assignee for the bug. ___ freebsd-toolchain@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"
[Bug 236714] Clang problem with rctl(8)
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236714 --- Comment #6 from Mark Johnston --- (In reply to Mateusz Guzik from comment #5) Well, it's fine in the (probably more common) case where the kernel changed a type from int to bool and userspace applications are not immediately updated to match. But I agree that it could cause some unpleasant surprises, and your diff looks fine to me. -- You are receiving this mail because: You are the assignee for the bug. ___ freebsd-toolchain@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"
[Bug 236714] Clang problem with rctl(8)
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236714 --- Comment #5 from Mateusz Guzik --- (In reply to Mark Johnston from comment #3) I don't think that's feasible since consumers can pass arbitrary sizes, and some probably pass more than they intended in a bogus manner where they would not be prepared to sudden zeroing of the area passed. Looks like the bug at hand can be easily taken care of with just resizing the var to bool in the userspace tool. While the previous binary remains broken I don't think it's a big deal since this is current-only. that is: diff --git a/usr.bin/rctl/rctl.c b/usr.bin/rctl/rctl.c index 74073c13207e..f8b5115a4507 100644 --- a/usr.bin/rctl/rctl.c +++ b/usr.bin/rctl/rctl.c @@ -378,8 +378,9 @@ print_rules(char *rules, int hflag, int nflag) static void enosys(void) { - int error, racct_enable; size_t racct_enable_len; + int error; + bool racct_enable; racct_enable_len = sizeof(racct_enable); error = sysctlbyname("kern.racct.enable", -- You are receiving this mail because: You are the assignee for the bug. ___ freebsd-toolchain@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"
[Bug 236714] Clang problem with rctl(8)
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236714 --- Comment #3 from Mark Johnston --- (In reply to Edward Tomasz Napierala from comment #2) It would probably be better to detect the case where the old buffer is larger than 1 byte, and zero the full buffer before writing out the value. -- You are receiving this mail because: You are the assignee for the bug. ___ freebsd-toolchain@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"
[Bug 236714] Clang problem with rctl(8)
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236714 --- Comment #2 from Edward Tomasz Napierala --- Thanks! I wonder if we could perhaps return an error from sysctl(3) in this case? -- You are receiving this mail because: You are the assignee for the bug. ___ freebsd-toolchain@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"
[Bug 236714] Clang problem with rctl(8)
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236714 Mark Johnston changed: What|Removed |Added CC||ma...@freebsd.org --- Comment #1 from Mark Johnston --- It's a regression from r341182. The kernel is exporting racct_enable as a bool. -- You are receiving this mail because: You are the assignee for the bug. ___ freebsd-toolchain@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"
[Bug 236714] Clang problem with rctl(8)
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236714 Mark Linimon changed: What|Removed |Added Assignee|b...@freebsd.org|toolch...@freebsd.org -- You are receiving this mail because: You are the assignee for the bug. ___ freebsd-toolchain@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"