md/raid5: fix new memory-reference bug in alloc_thread_groups.
authorNeilBrown <neilb@suse.de>
Mon, 25 Nov 2013 00:12:43 +0000 (11:12 +1100)
committerNeilBrown <neilb@suse.de>
Thu, 28 Nov 2013 00:00:04 +0000 (11:00 +1100)
In alloc_thread_groups, worker_groups is a pointer to an array,
not an array of pointers.
So
   worker_groups[i]
is wrong.  It should be
   &(*worker_groups)[i]

Found-by: coverity
Fixes: 60aaf9338545
Reported-by: Ben Hutchings <bhutchings@solarflare.com>
Cc: majianpeng <majianpeng@gmail.com>
Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/raid5.c

index 47da0af6322be1bd7930f902c96c57875799a358..676d8b7c51170b9a993fd87b2dc8c7f9c9a99ece 100644 (file)
@@ -5471,7 +5471,7 @@ static int alloc_thread_groups(struct r5conf *conf, int cnt,
        for (i = 0; i < *group_cnt; i++) {
                struct r5worker_group *group;
 
-               group = worker_groups[i];
+               group = &(*worker_groups)[i];
                INIT_LIST_HEAD(&group->handle_list);
                group->conf = conf;
                group->workers = workers + i * cnt;