On Tue, 28 Jul 2015, Peter Zijlstra wrote:

On Wed, Jul 01, 2015 at 03:21:06PM -0700, Vikas Shivappa wrote:
 static int __init intel_rdt_late_init(void)
 {
        struct cpuinfo_x86 *c = &boot_cpu_data;
+       static struct clos_cbm_map *ccm;
+       u32 maxid, max_cbm_len;
+       size_t sizeb;

Why 'sizeb' ? 'size' is still available, right?

will fix. int size should be good enough.


+       int err = 0;

-       if (!cpu_has(c, X86_FEATURE_CAT_L3))
+       if (!cpu_has(c, X86_FEATURE_CAT_L3)) {
+               rdt_root_group.css.ss->disabled = 1;
                return -ENODEV;
+       }
+       maxid = c->x86_cache_max_closid;
+       max_cbm_len = c->x86_cache_max_cbm_len;
+
+       sizeb = BITS_TO_LONGS(maxid) * sizeof(long);
+       rdtss_info.closmap = kzalloc(sizeb, GFP_KERNEL);
+       if (!rdtss_info.closmap) {
+               err = -ENOMEM;
+               goto out_err;
+       }
+
+       sizeb = maxid * sizeof(struct clos_cbm_map);
+       ccmap = kzalloc(sizeb, GFP_KERNEL);
+       if (!ccmap) {
+               kfree(rdtss_info.closmap);
+               err = -ENOMEM;
+               goto out_err;
+       }

What's the expected size of max_closid? iow, how big of an array are you
in fact allocating here?

the size of maxclosid value is 16 bits.. For systems with large CPUs this may be more but with EPs have only seen 20-30.
Thanks,
Vikas


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to