Merge branches 'softirq-for-linus', 'x86-debug-for-linus', 'x86-numa-for-linus',...
[~shefty/rdma-dev.git] / arch / x86 / kernel / tlb_uv.c
index 50ac949c7f1c5ee85381bd5ade1a37244a2f98d6..20ea20a39e2a2f4b2a0012edd532ebff368f3e5a 100644 (file)
@@ -1001,10 +1001,10 @@ static int uv_ptc_seq_show(struct seq_file *file, void *data)
 static ssize_t tunables_read(struct file *file, char __user *userbuf,
                                                size_t count, loff_t *ppos)
 {
-       char buf[300];
+       char *buf;
        int ret;
 
-       ret = snprintf(buf, 300, "%s %s %s\n%d %d %d %d %d %d %d %d %d\n",
+       buf = kasprintf(GFP_KERNEL, "%s %s %s\n%d %d %d %d %d %d %d %d %d\n",
                "max_bau_concurrent plugged_delay plugsb4reset",
                "timeoutsb4reset ipi_reset_limit complete_threshold",
                "congested_response_us congested_reps congested_period",
@@ -1012,7 +1012,12 @@ static ssize_t tunables_read(struct file *file, char __user *userbuf,
                timeoutsb4reset, ipi_reset_limit, complete_threshold,
                congested_response_us, congested_reps, congested_period);
 
-       return simple_read_from_buffer(userbuf, count, ppos, buf, ret);
+       if (!buf)
+               return -ENOMEM;
+
+       ret = simple_read_from_buffer(userbuf, count, ppos, buf, strlen(buf));
+       kfree(buf);
+       return ret;
 }
 
 /*