kdumpctl: fix infinite loop caused by running under bash
Description of problem (https://bugzilla.redhat.com/show_bug.cgi?id=1465735): Run `kdumpctl status` as normal user, get below error messages: Another app is currently holding the kdump lock; waiting for it to exit... flock: 9: Bad file descriptor Another app is currently holding the kdump lock; waiting for it to exit... flock: 9: Bad file descriptor ... The bug is caused by behavior difference between bash and sh (bash in posix). In the function single_instance_lock in kdumpctl script, there is exec 9>/var/lock/kdump which will fail in user mode. However, this fail will cause script exiting under bash but not exiting under sh, causing infinite loop because the flock will always fail. According to the 16th item in ftp://ftp.gnu.org/old-gnu/Manuals/bash-2.02/html_node/bashref_66.html If a POSIX.2 special builtin returns an error status, a non- interactive shell exits. And according to https://www.gnu.org/software/bash/manual/html_node/Special-Builtins.html exec is one of the POSIX.2 special builtin's. This patch fixes the bug by checking exec return value. Fixes: 9fb2996d05c2 ("kdumpctl: change the shebang header to use /bin/bash") Signed-off-by: Ziyue Yang <ziyang@redhat.com> Acked-by: Dave Young <dyoung@redhat.com> Reviewed-by: Xunlei Pang <xlpang@redhat.com>
This commit is contained in:
parent
151e0b5345
commit
0933f89f65