Re: [PATCH 1/2] kill_something_info: misc cleanups

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Dec 16, 2006 at 11:05:10PM +0300, Oleg Nesterov wrote:
>  static int kill_something_info(int sig, struct siginfo *info, int pid)
>  {
>  	int ret;
> +
> +	rcu_read_lock();
> +	if (pid > 0) {
> +		ret = kill_pid_info(sig, info, find_pid(pid));
> +	} else if (pid == -1) {
> +		struct task_struct *p;
> +		int found = 0;
> +
> +		ret = 0;
> +		read_lock(&tasklist_lock);
> +		for_each_process(p)
> +			if (!is_init(p) && p != current->group_leader) {
> +				int err = group_send_sig_info(sig, info, p);
> +				if (err != -EPERM)
> +					ret = err;
> +				found = 1;
> +			}
> +		read_unlock(&tasklist_lock);
> +		if (!found)
> +			ret = -ESRCH;

This branch should probably be factored out into a helper of it's own:

static int kill_this_group_info(int sig, struct siginfo *info)
{
	struct task_struct *p;
	int ret = 0, found = 0;

	read_lock(&tasklist_lock);
	for_each_process(p) {
		if (!is_init(p) && p != current->group_leader) {
			int err = group_send_sig_info(sig, info, p);
			if (err != -EPERM)
				ret = err;
			found = 1;
		}
	}
	read_unlock(&tasklist_lock);
	if (!found)
		return -ESRCH;
	return found ? ret : -ESRCH;
}

> +	} else {
> +		struct pid *grp = task_pgrp(current);
> +		if (pid != 0)
> +			grp = find_pid(-pid);
> +		ret = kill_pgrp_info(sig, info, grp);
> +	}

This also looks rather unreadable, an

	} else if (pid) {
		ret = kill_pgrp_info(sig, info, find_pid(-pid));
	} else {
		ret = kill_pgrp_info(sig, info, task_pgrp(current));
	}

might be slightly more code, but also a lot more readable.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux