| 93 | | |
|---|
| 94 | | |
|---|
| 95 | | ============================================================================ |
|---|
| 96 | | Following are old problems with older kernels. |
|---|
| 97 | | |
|---|
| 98 | | |
|---|
| 99 | | Pre-2.1.58 /proc directory Oops |
|---|
| 100 | | =============================== |
|---|
| 101 | | |
|---|
| 102 | | There is a problem in pre 2.1.58 kernels that can make the kernel Oops. You |
|---|
| 103 | | can trigger this Oops if you have opened any file, or are in any directory, |
|---|
| 104 | | created by a module. If you remove the module at such a moment, successive |
|---|
| 105 | | access to those files or directories will make the kernel complain through |
|---|
| 106 | | an Oops. There is really no good way to solve this. Stock kernel modules |
|---|
| 107 | | exhibit the same problem, by the way. Kernels from 2.1.58 onwards have new |
|---|
| 108 | | fill_inode() semantics; using this function, we can increase the module use |
|---|
| 109 | | count while a module file or directory is accessed. This solves the problem, |
|---|
| 110 | | because it makes it impossible to remove the module. |
|---|
| 111 | | Alan Cox (alan@lxorguk.ukuu.org.uk), the maintainer of 2.0 kernels, has |
|---|
| 112 | | said he will consider patches that backport this 2.1 feature; perhaps it |
|---|
| 113 | | will be in 2.0.37. Until then, be careful when you unload modules. |
|---|
| 114 | | |
|---|
| 115 | | |
|---|
| 116 | | 2.2.x cdrom.o Oops |
|---|
| 117 | | ================== |
|---|
| 118 | | |
|---|
| 119 | | Module cdrom.o in all 2.2 kernels conflicts with our sensors.o module. |
|---|
| 120 | | You can get an Oops if cdrom.o is unloaded after sensors.o was loaded. |
|---|
| 121 | | Below is a small diff that you can apply to the kernel to correct this. |
|---|
| 122 | | Another solution is to make sure cdrom.o is never unloaded, or to make |
|---|
| 123 | | sure it is not a module but compiled into the kernel proper. |
|---|
| 124 | | |
|---|
| 125 | | The diff corrects a long-standing /proc bug. It will go into kernel 2.2.2 |
|---|
| 126 | | or later in a somewhat modified form. It was written by Jens Axboe |
|---|
| 127 | | <axboe@image.dk>. |
|---|
| 128 | | |
|---|
| 129 | | -----cut here----- |
|---|
| 130 | | --- virgin/kernel/sysctl.c Sat Jan 9 07:54:16 1999 |
|---|
| 131 | | +++ linux/kernel/sysctl.c Mon Feb 1 23:44:58 1999 |
|---|
| 132 | | @@ -559,12 +559,12 @@ |
|---|
| 133 | | unregister_proc_table(table->child, de); |
|---|
| 134 | | } |
|---|
| 135 | | /* Don't unregister proc directories which still have |
|---|
| 136 | | - entries... */ |
|---|
| 137 | | - if (!((de->mode & S_IFDIR) && de->subdir)) { |
|---|
| 138 | | + entries or are still being used... */ |
|---|
| 139 | | + if (!((de->mode & S_IFDIR) && de->subdir) && !de->count) |
|---|
| 140 | | { |
|---|
| 141 | | proc_unregister(root, de->low_ino); |
|---|
| 142 | | table->de = NULL; |
|---|
| 143 | | kfree(de); |
|---|
| 144 | | - } |
|---|
| 145 | | + } |
|---|
| 146 | | } |
|---|
| 147 | | } |
|---|
| 148 | | -----cut here----- |
|---|
| 149 | | |
|---|
| 150 | | |
|---|
| 151 | | Kernel i2c conflict |
|---|
| 152 | | =================== |
|---|
| 153 | | |
|---|
| 154 | | An older version of the i2c modules is distributed in 2.2 and late 2.1 |
|---|
| 155 | | kernels. If you try to use it at the same moment as our i2c modules, you |
|---|
| 156 | | may get into trouble. This should be fixed for lm_sensors-2.4.0 and newer. |
|---|