mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-12 09:17:44 +03:00
killall: use is_kernel_thread() during killing spree process filtering too
Apparently the new "bpfilter" subsystem otherwise confuses us. See: https://lists.freedesktop.org/archives/systemd-devel/2018-September/041392.html
This commit is contained in:
parent
2b5d05fdfe
commit
e45154c770
@ -23,9 +23,8 @@
|
||||
|
||||
static bool ignore_proc(pid_t pid, bool warn_rootfs) {
|
||||
_cleanup_fclose_ FILE *f = NULL;
|
||||
char c;
|
||||
const char *p;
|
||||
size_t count;
|
||||
char c = 0;
|
||||
uid_t uid;
|
||||
int r;
|
||||
|
||||
@ -33,6 +32,11 @@ static bool ignore_proc(pid_t pid, bool warn_rootfs) {
|
||||
if (pid == 1)
|
||||
return true;
|
||||
|
||||
/* Ignore kernel threads */
|
||||
r = is_kernel_thread(pid);
|
||||
if (r != 0)
|
||||
return true; /* also ignore processes where we can't determine this */
|
||||
|
||||
r = get_process_uid(pid, &uid);
|
||||
if (r < 0)
|
||||
return true; /* not really, but better safe than sorry */
|
||||
@ -46,11 +50,10 @@ static bool ignore_proc(pid_t pid, bool warn_rootfs) {
|
||||
if (!f)
|
||||
return true; /* not really, but has the desired effect */
|
||||
|
||||
count = fread(&c, 1, 1, f);
|
||||
|
||||
/* Kernel threads have an empty cmdline */
|
||||
if (count <= 0)
|
||||
return true;
|
||||
/* Try to read the first character of the command line. If the cmdline is empty (which might be the case for
|
||||
* kernel threads but potentially also other stuff), this line won't do anything, but we don't care much, as
|
||||
* actual kernel threads are already filtered out above. */
|
||||
(void) fread(&c, 1, 1, f);
|
||||
|
||||
/* Processes with argv[0][0] = '@' we ignore from the killing spree.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user