sysctl: do not report set key in case close_stream
fails
As we're using buffered I/O when writing kernel parameters, write errors may get delayed until we close the `FILE` stream. As we are currently outputting the key that is to be set disregarding the return value of `close_stream`, we may end up in a situation where we report error and success: $ sysctl kernel.printk_ratelimit=100000000000000 sysctl: setting key "kernel.printk_ratelimit": error code 22 kernel.printk_ratelimit = 100000000000000 Fix the issue by only outputting the updated value in case `close_stream` does not report an error. Signed-off-by: Patrick Steinhardt <ps@pks.im>
This commit is contained in:
parent
09a3687547
commit
866a27cdcd
2
sysctl.c
2
sysctl.c
@ -462,7 +462,7 @@ static int WriteSetting(const char *setting)
|
|||||||
rc = 0;
|
rc = 0;
|
||||||
if (close_stream(fp) != 0)
|
if (close_stream(fp) != 0)
|
||||||
xwarn(_("setting key \"%s\""), outname);
|
xwarn(_("setting key \"%s\""), outname);
|
||||||
if (rc == 0 && !Quiet) {
|
else if (rc == 0 && !Quiet) {
|
||||||
if (NameOnly) {
|
if (NameOnly) {
|
||||||
fprintf(stdout, "%s\n", outname);
|
fprintf(stdout, "%s\n", outname);
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user