* [PATCH 1/3] kernel: pid: Update documentation.
[not found] <cover.1490542214.git.rvarsha016@gmail.com>
@ 2017-03-26 15:34 ` Varsha Rao
2017-03-26 15:35 ` [PATCH 2/3] kernel: pid: Replace unsigned with unsigned int Varsha Rao
2017-03-26 15:36 ` [PATCH 3/3] kernel: pid: Add blank line after declarations Varsha Rao
2 siblings, 0 replies; 5+ messages in thread
From: Varsha Rao @ 2017-03-26 15:34 UTC (permalink / raw)
To: mawilcox; +Cc: outreachy-kernel
This patch adds comments to update documentation.
Signed-off-by: Varsha Rao <rvarsha016@gmail.com>
---
kernel/pid.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/kernel/pid.c b/kernel/pid.c
index 0143ac0..0b0aad4 100644
--- a/kernel/pid.c
+++ b/kernel/pid.c
@@ -43,6 +43,7 @@
#define pid_hashfn(nr, ns) \
hash_long((unsigned long)nr + (unsigned long)ns, pidhash_shift)
static struct hlist_head *pid_hash;
+/* Doubly linked hash lists to find PID in given namespace. */
static unsigned int pidhash_shift = 4;
struct pid init_struct_pid = INIT_STRUCT_PID;
@@ -53,6 +54,7 @@ int pid_max = PID_MAX_DEFAULT;
int pid_max_min = RESERVED_PIDS + 1;
int pid_max_max = PID_MAX_LIMIT;
+/* mk_pid() returns distance between map and offset pidmap. */
static inline int mk_pid(struct pid_namespace *pid_ns,
struct pidmap *map, int off)
{
@@ -101,6 +103,7 @@ EXPORT_SYMBOL_GPL(init_pid_ns);
static __cacheline_aligned_in_smp DEFINE_SPINLOCK(pidmap_lock);
+/* free_pidmap() : It frees process id. */
static void free_pidmap(struct upid *upid)
{
int nr = upid->nr;
@@ -150,6 +153,9 @@ static void set_last_pid(struct pid_namespace *pid_ns, int base, int pid)
} while ((prev != last_write) && (pid_before(base, last_write, pid)));
}
+/* alloc_pidmap(): Increments last pid by one and returns it if new pid
+ * is valid.
+ */
static int alloc_pidmap(struct pid_namespace *pid_ns)
{
int i, offset, max_scan, pid, last = pid_ns->last_pid;
@@ -212,6 +218,9 @@ static int alloc_pidmap(struct pid_namespace *pid_ns)
return -EAGAIN;
}
+/* next_pidmap() is used to find the first pid which is greater than previous
+ * last allocated pid.
+ */
int next_pidmap(struct pid_namespace *pid_ns, unsigned int last)
{
int offset;
@@ -233,6 +242,7 @@ int next_pidmap(struct pid_namespace *pid_ns, unsigned int last)
return -1;
}
+/* put_pid() checks whether pid can be reallocated. */
void put_pid(struct pid *pid)
{
struct pid_namespace *ns;
@@ -249,6 +259,9 @@ void put_pid(struct pid *pid)
}
EXPORT_SYMBOL_GPL(put_pid);
+/* delayed_put_pid(): Finds the real location of struct pid in the
+ * memory and checks whether it can be reallocated with put_pid().
+ */
static void delayed_put_pid(struct rcu_head *rhp)
{
struct pid *pid = container_of(rhp, struct pid, rcu);
@@ -293,6 +306,9 @@ void free_pid(struct pid *pid)
call_rcu(&pid->rcu, delayed_put_pid);
}
+/* alloc_pid(): Allocates local pid for each multiple namespaces
+ * in which new process created is visible.
+ */
struct pid *alloc_pid(struct pid_namespace *ns)
{
struct pid *pid;
--
2.9.3
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH 2/3] kernel: pid: Replace unsigned with unsigned int.
[not found] <cover.1490542214.git.rvarsha016@gmail.com>
2017-03-26 15:34 ` [PATCH 1/3] kernel: pid: Update documentation Varsha Rao
@ 2017-03-26 15:35 ` Varsha Rao
2017-03-26 15:41 ` [Outreachy kernel] " Julia Lawall
2017-03-26 15:36 ` [PATCH 3/3] kernel: pid: Add blank line after declarations Varsha Rao
2 siblings, 1 reply; 5+ messages in thread
From: Varsha Rao @ 2017-03-26 15:35 UTC (permalink / raw)
To: mawilcox; +Cc: outreachy-kernel
Replace unsigned with unsigned int, to fix the checkpatch issue.
Signed-off-by: Varsha Rao <rvarsha016@gmail.com>
---
kernel/pid.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/pid.c b/kernel/pid.c
index 0b0aad4..c022239 100644
--- a/kernel/pid.c
+++ b/kernel/pid.c
@@ -125,7 +125,7 @@ static int pid_before(int base, int a, int b)
* (a - base + MAXUINT) % MAXUINT < (b - base + MAXUINT) % MAXUINT
* and that mapping orders 'a' and 'b' with respect to 'base'.
*/
- return (unsigned)(a - base) < (unsigned)(b - base);
+ return (unsigned int)(a - base) < (unsigned int)(b - base);
}
/*
--
2.9.3
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [Outreachy kernel] [PATCH 2/3] kernel: pid: Replace unsigned with unsigned int.
2017-03-26 15:35 ` [PATCH 2/3] kernel: pid: Replace unsigned with unsigned int Varsha Rao
@ 2017-03-26 15:41 ` Julia Lawall
2017-03-27 2:34 ` Varsha Rao
0 siblings, 1 reply; 5+ messages in thread
From: Julia Lawall @ 2017-03-26 15:41 UTC (permalink / raw)
To: Varsha Rao; +Cc: mawilcox, outreachy-kernel
On Sun, 26 Mar 2017, Varsha Rao wrote:
> Replace unsigned with unsigned int, to fix the checkpatch issue.
>
> Signed-off-by: Varsha Rao <rvarsha016@gmail.com>
> ---
> kernel/pid.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/pid.c b/kernel/pid.c
> index 0b0aad4..c022239 100644
> --- a/kernel/pid.c
> +++ b/kernel/pid.c
> @@ -125,7 +125,7 @@ static int pid_before(int base, int a, int b)
> * (a - base + MAXUINT) % MAXUINT < (b - base + MAXUINT) % MAXUINT
> * and that mapping orders 'a' and 'b' with respect to 'base'.
> */
> - return (unsigned)(a - base) < (unsigned)(b - base);
> + return (unsigned int)(a - base) < (unsigned int)(b - base);
> }
Unrelatedly, it looks like bool would be a more natural return type.
julia
>
> /*
> --
> 2.9.3
>
> --
> You received this message because you are subscribed to the Google Groups "outreachy-kernel" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com.
> To post to this group, send email to outreachy-kernel@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/58d7dfaa.c65b620a.68c66.766e%40mx.google.com.
> For more options, visit https://groups.google.com/d/optout.
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Outreachy kernel] [PATCH 2/3] kernel: pid: Replace unsigned with unsigned int.
2017-03-26 15:41 ` [Outreachy kernel] " Julia Lawall
@ 2017-03-27 2:34 ` Varsha Rao
0 siblings, 0 replies; 5+ messages in thread
From: Varsha Rao @ 2017-03-27 2:34 UTC (permalink / raw)
To: outreachy-kernel; +Cc: rvarsha016, mawilcox
[-- Attachment #1.1: Type: text/plain, Size: 1066 bytes --]
>
>
> On Sun, 26 Mar 2017, Varsha Rao wrote:
>
> > Replace unsigned with unsigned int, to fix the checkpatch issue.
> >
> > Signed-off-by: Varsha Rao <rvars...@gmail.com <javascript:>>
> > ---
> > kernel/pid.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/kernel/pid.c b/kernel/pid.c
> > index 0b0aad4..c022239 100644
> > --- a/kernel/pid.c
> > +++ b/kernel/pid.c
> > @@ -125,7 +125,7 @@ static int pid_before(int base, int a, int b)
> > * (a - base + MAXUINT) % MAXUINT < (b - base + MAXUINT) %
> MAXUINT
> > * and that mapping orders 'a' and 'b' with respect to 'base'.
> > */
> > - return (unsigned)(a - base) < (unsigned)(b - base);
> > + return (unsigned int)(a - base) < (unsigned int)(b - base);
> > }
>
> Unrelatedly, it looks like bool would be a more natural return type.
>
I will change the return type to bool. Also It is called only once in
do while condition.
I will send new patch for it.
Regards,
Varsha Rao
> julia
>
>
[-- Attachment #1.2: Type: text/html, Size: 1768 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 3/3] kernel: pid: Add blank line after declarations.
[not found] <cover.1490542214.git.rvarsha016@gmail.com>
2017-03-26 15:34 ` [PATCH 1/3] kernel: pid: Update documentation Varsha Rao
2017-03-26 15:35 ` [PATCH 2/3] kernel: pid: Replace unsigned with unsigned int Varsha Rao
@ 2017-03-26 15:36 ` Varsha Rao
2 siblings, 0 replies; 5+ messages in thread
From: Varsha Rao @ 2017-03-26 15:36 UTC (permalink / raw)
To: mawilcox; +Cc: outreachy-kernel
Add a blank line after declarations, to fix the checkpatch issue.
Signed-off-by: Varsha Rao <rvarsha016@gmail.com>
---
kernel/pid.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/kernel/pid.c b/kernel/pid.c
index c022239..64c0ce4 100644
--- a/kernel/pid.c
+++ b/kernel/pid.c
@@ -147,6 +147,7 @@ static void set_last_pid(struct pid_namespace *pid_ns, int base, int pid)
{
int prev;
int last_write = base;
+
do {
prev = last_write;
last_write = cmpxchg(&pid_ns->last_pid, prev, pid);
@@ -265,6 +266,7 @@ EXPORT_SYMBOL_GPL(put_pid);
static void delayed_put_pid(struct rcu_head *rhp)
{
struct pid *pid = container_of(rhp, struct pid, rcu);
+
put_pid(pid);
}
@@ -404,6 +406,7 @@ EXPORT_SYMBOL_GPL(find_vpid);
void attach_pid(struct task_struct *task, enum pid_type type)
{
struct pid_link *link = &task->pids[type];
+
hlist_add_head_rcu(&link->node, &link->pid->tasks[type]);
}
@@ -450,8 +453,10 @@ void transfer_pid(struct task_struct *old, struct task_struct *new,
struct task_struct *pid_task(struct pid *pid, enum pid_type type)
{
struct task_struct *result = NULL;
+
if (pid) {
struct hlist_node *first;
+
first = rcu_dereference_check(hlist_first_rcu(&pid->tasks[type]),
lockdep_tasklist_lock_is_held());
if (first)
@@ -479,6 +484,7 @@ struct task_struct *find_task_by_vpid(pid_t vnr)
struct pid *get_task_pid(struct task_struct *task, enum pid_type type)
{
struct pid *pid;
+
rcu_read_lock();
if (type != PIDTYPE_PID)
task = task->group_leader;
@@ -491,6 +497,7 @@ EXPORT_SYMBOL_GPL(get_task_pid);
struct task_struct *get_pid_task(struct pid *pid, enum pid_type type)
{
struct task_struct *result;
+
rcu_read_lock();
result = pid_task(pid, type);
if (result)
--
2.9.3
^ permalink raw reply related [flat|nested] 5+ messages in thread