Re: [RFC] [PATCH] cpuset operations causes Badness at mm/slab.c:777 warning

Christoph Lameter
2007-06-01T18:13:54Z

On Fri, 1 Jun 2007, Srinivasa Ds wrote:

> I have modified the patch little bit, Thanks Vatsa for input and hence
> resending it. Please let me know your comments on this.

Hmmmm.... Isnt it easier to set the pidarray to NULL in the case it
has no objects? Then any deferences will fail. Paul?

---
kernel/cpuset.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)

Index: linux-2.6/kernel/cpuset.c
===================================================================
--- linux-2.6.orig/kernel/cpuset.c 2007-06-01 11:09:39.000000000 -0700
+++ linux-2.6/kernel/cpuset.c 2007-06-01 11:11:59.000000000 -0700
@@ -1723,7 +1723,7 @@ static int cpuset_tasks_open(struct inod
{
struct cpuset *cs = __d_cs(file->f_path.dentry->d_parent);
struct ctr_struct *ctr;
- pid_t *pidarray;
+ pid_t *pidarray = NULL;
int npids;
char c;

@@ -1741,9 +1741,11 @@ static int cpuset_tasks_open(struct inod
* show up until sometime later on.
*/
npids = atomic_read(&cs->count);
- pidarray = kmalloc(npids * sizeof(pid_t), GFP_KERNEL);
- if (!pidarray)
- goto err1;
+ if (npids)
+ pidarray = kmalloc(npids * sizeof(pid_t), GFP_KERNEL);
+ if (!pidarray)
+ goto err1;
+ }

npids = pid_array_load(pidarray, npids, cs);
sort(pidarray, npids, sizeof(pid_t), cmppid, NULL);