Call put_cpu() if lprocfs_stats_alloc_one() fails in
lprocfs_stats_lock().
Signed-off-by: John L. Hammond <jhammond@tacc.utexas.edu>
Change-Id: I12c3eb9ecbbef3086493d63c300ddb853d86dd98
Reviewed-on: http://review.whamcloud.com/4845
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Keith Mannthey <keith.mannthey@intel.com>
Reviewed-by: Bob Glossman <bob.glossman@intel.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
if ((stats->ls_flags & LPROCFS_STATS_FLAG_NOPERCPU) == 0) {
cpuid = cfs_get_cpu();
- if (unlikely(stats->ls_percpu[cpuid + 1] == NULL))
+ if (unlikely(stats->ls_percpu[cpuid + 1] == NULL)) {
rc = lprocfs_stats_alloc_one(stats, cpuid + 1);
- return rc < 0 ? rc : cpuid + 1;
+ if (rc < 0) {
+ cfs_put_cpu();
+ return rc;
+ }
+ }
+
+ return cpuid + 1;
}
/* non-percpu counter stats */