Red Hat Bugzilla – Bug 156142
kernel may oops if more than 4k worth of string data returned in /proc/devices
Last modified: 2007-11-30 17:07:07 EST
+++ This bug was initially created as a clone of Bug #156029 +++ Description of problem: the read routine for /proc/devices is missing a length check routine. Consequently, if the number of block and char devices in a system totals more than 4096 bytes of string data between their names and major/minor numbers, the read routine will sprintf the data off the end of the page and oops the kernel. other proc files that are part of proc_misc.c protect against this with a length check that truncates the file if it goes over a page, but this check is missing from get_device_list and get_blkdev_list. Version-Release number of selected component (if applicable): all How reproducible: always Steps to Reproduce: 1. register sufficient char/block devices in a system to create > 4096 bytes of string data for /proc/devices 2. cat /proc/devices 3. Actual results: system will oops on a page fault Expected results: system should truncate file to 4096 bytes. Additional info:
A fix for this problem has just been committed to the RHEL3 U6 patch pool this evening (in kernel version 2.4.21-32.3.EL).
I wrote a module to register dummy character devices and block devices to fill up the page in /proc/devices. Pretty straightforward. Do you want it?
Created attachment 114458 [details] rhkl patch accepted to fix this problem Sorry, arjan, I thought it was already added here. This is what was accepted on rhkl. Its pretty unobtrusive.
Created attachment 114459 [details] rhkl patch accepted to fix this problem Sorry, arjan, I thought it was already added here. This is what was accepted on rhkl. Its pretty unobtrusive. I'll dig out my test code (need to remember where I put it), and post it here shortly
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on the solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2005-663.html