Skip to contentSkip to conversation

converting cap_set_pg() to for_each_task_pid()

PATCH Applied William Lee Irwin III 3 participants 5 messages Dec 18, 2002 Capabilities

lore
Share & tools
lore
#0 lore raw

I have a pending patch that converts cap_set_pg() to the for_each_task_pid() API. Could you review this, and if it pass, include it in your tree?

Thanks,
Bill

cap_set_pg() wants to find all processes in a given process group. This converts it to use for_each_task_pid().

 capability.c |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)
kernel/capability.c +9 -7
diff -urpN wli-2.5.51-bk1-4/kernel/capability.c wli-2.5.51-bk1-5/kernel/capability.c
@@ -84,13 +84,15 @@ static inline void cap_set_pg(int pgrp, 
 			      kernel_cap_t *inheritable,
 			      kernel_cap_t *permitted)
 {
-     task_t *g, *target;
-
-     do_each_thread(g, target) {
-             if (target->pgrp != pgrp)
-                     continue;
-	     security_capset_set(target, effective, inheritable, permitted);
-     } while_each_thread(g, target);
+	task_t *g, *target;
+	struct list_head *l;
+	struct pid *pid;
+
+	for_each_task_pid(pgrp, PIDTYPE_PGID, g, l, pid) {
+		target = g;
+		while_each_thread(g, target)
+			security_capset_set(target, effective, inheritable, permitted);
+	}
 }
 
 /*
#1 lore raw
Quoted 3 lines · William Lee Irwin III

I have a pending patch that converts cap_set_pg() to the for_each_task_pid() API. Could you review this, and if it pass, include it in your tree?

This is functionally the same, right?
And if so, why do the change, is this now faster somehow?

thanks,

greg k-h

#2 lore raw
Quoted 3 lines · William Lee Irwin III
Quoted 3 lines

I have a pending patch that converts cap_set_pg() to the for_each_task_pid() API. Could you review this, and if it pass, include it in your tree?

Quoted 2 lines · Greg KH

This is functionally the same, right?
And if so, why do the change, is this now faster somehow?

It is functionally equivalent. The motivation is not so much performance as API conversion. I am personally taking it upon myself to deprecate for_each_process() and do_each_thread() and update the mergeably correctible callers. The deprecation motives are both efficiency and correctness related.

It should improve performance in whatever sense performance is interesting from the point of view of this function; however, it is not motivated by that fact (and performance is not of interest with respect to most security functions). It is API conversion.

Thanks,
Bill

#3 lore raw
In reply to William Lee Irwin III
Quoted 3 lines · * William Lee Irwin III ([email protected]) wrote:

I have a pending patch that converts cap_set_pg() to the for_each_task_pid() API. Could you review this, and if it pass, include it in your tree?

I have no problem with this change.
-chris

Signature · 1 line
Linux Security Modules     http://lsm.immunix.org     http://lsm.bkbits.net
Applied
#4 lore raw
In reply to William Lee Irwin III
Quoted 3 lines · William Lee Irwin III

I have a pending patch that converts cap_set_pg() to the for_each_task_pid() API. Could you review this, and if it pass, include it in your tree?

Applied to my tree, I'll send it to Linus in a bit.

thanks,

greg k-h