Messages in this thread Patch in this message | | | Date | Thu, 10 Apr 2003 15:02:34 -0700 | From | David Mosberger <> | Subject | proc_misc.c bug |
| |
interrupts_open() can easily try to kmalloc() more memory than supported by kmalloc. E.g., with 16KB page size and NR_CPUS==64, it would try to allocate 147456 bytes.
The workaround below is to allocate 4KB per 8 CPUs. Not really a solution, but the fundamental problem is that /proc/interrupts shouldn't use a fixed buffer size in the first place. I suppose another solution would be to use vmalloc() instead. It all feels like bandaids though.
--david
===== fs/proc/proc_misc.c 1.71 vs edited ===== --- 1.71/fs/proc/proc_misc.c Sat Mar 22 22:14:49 2003 +++ edited/fs/proc/proc_misc.c Thu Apr 10 14:35:16 2003 @@ -388,7 +388,7 @@ extern int show_interrupts(struct seq_file *p, void *v); static int interrupts_open(struct inode *inode, struct file *file) { - unsigned size = PAGE_SIZE * (1 + NR_CPUS / 8); + unsigned size = 4096 * (1 + NR_CPUS / 8); char *buf = kmalloc(size, GFP_KERNEL); struct seq_file *m; int res; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |