Summary: | ASTERISK-08940: [patch] Memory Corruption on SMP systems causes Kernel Panic | ||
Reporter: | Avenhaus (adomo) | Labels: | |
Date Opened: | 2007-03-05 14:13:18.000-0600 | Date Closed: | 2008-06-07 12:50:57 |
Priority: | Critical | Regression? | No |
Status: | Closed/Complete | Components: | Core/General |
Versions: | Frequency of Occurrence | ||
Related Issues: | |||
Environment: | Attachments: | ( 0) DCP_3732.JPG ( 1) zaptel_kernel_panic_less.patch ( 2) zaptel_kernel_panic.patch | |
Description: | On SMP systems interrupts can change chan->outreadbuf and chan->inwritebuf while zt_chan_read() and zt_chan_write() are using them. This leads to memory corruptions that show up as strange errors on the d-channel and sometimes kernel panics. Here is a patch to fix the problem. | ||
Comments: | By: Tzafrir Cohen (tzafrir) 2007-04-07 03:17:18 This patch also seems to try to patch the incorrect allocation of memory with ZT_CHANDIAG . However this is already fixed in issue 9364 and already applied. By: Tzafrir Cohen (tzafrir) 2007-04-07 03:33:32 zaptel_kernel_panic_less.patch: sameas zaptel_kernel_panic.patch, with the last three hunks removed. They seem to be unrelated fixes. Totally untested. By: Matthew Fredrickson (mattf) 2007-04-07 11:37:04 Ok, I'm reviewing it. If it looks good, I'll put it in. By: Matthew Fredrickson (mattf) 2007-04-07 11:49:40 Applied to 1.2, 1.4, and trunk. Thanks adomo! By: Digium Subversion (svnbot) 2008-06-07 12:49:49 Repository: dahdi Revision: 2396 U trunk/zaptel.c ------------------------------------------------------------------------ r2396 | mattf | 2008-06-07 12:49:49 -0500 (Sat, 07 Jun 2008) | 3 lines chan variables are accessed without a lock, so they could change underneath us. Make sure we use a local variable for access to them. (ASTERISK-8940) ------------------------------------------------------------------------ http://svn.digium.com/view/dahdi?view=rev&revision=2396 By: Digium Subversion (svnbot) 2008-06-07 12:49:52 Repository: dahdi Revision: 2397 U branches/1.4/zaptel-base.c ------------------------------------------------------------------------ r2397 | mattf | 2008-06-07 12:49:51 -0500 (Sat, 07 Jun 2008) | 2 lines Fix for ASTERISK-8940. Memory corruption within zaptel data. ------------------------------------------------------------------------ http://svn.digium.com/view/dahdi?view=rev&revision=2397 By: Digium Subversion (svnbot) 2008-06-07 12:49:53 Repository: dahdi Revision: 2398 U branches/1.2/zaptel-base.c ------------------------------------------------------------------------ r2398 | mattf | 2008-06-07 12:49:52 -0500 (Sat, 07 Jun 2008) | 2 lines Fix for ASTERISK-8940. Thanks adomo and Tzafrir! ------------------------------------------------------------------------ http://svn.digium.com/view/dahdi?view=rev&revision=2398 By: Digium Subversion (svnbot) 2008-06-07 12:50:57 Repository: dahdi Revision: 2458 _U be/branches/B.2/ U be/branches/B.2/Makefile U be/branches/B.2/README U be/branches/B.2/README.Linux26 A be/branches/B.2/README.hpec U be/branches/B.2/build_tools/make_firmware_object U be/branches/B.2/hpec/hpec_zaptel.h A be/branches/B.2/jpah.h U be/branches/B.2/wct1xxp.c U be/branches/B.2/wct4xxp/base.c U be/branches/B.2/wct4xxp/vpm450m.c U be/branches/B.2/wcte12xp.c A be/branches/B.2/xpp/.version U be/branches/B.2/xpp/Makefile A be/branches/B.2/xpp/card_bri.c A be/branches/B.2/xpp/card_bri.h U be/branches/B.2/xpp/card_fxo.c U be/branches/B.2/xpp/card_fxs.c U be/branches/B.2/xpp/card_global.c U be/branches/B.2/xpp/firmwares/FPGA_1141.hex U be/branches/B.2/xpp/firmwares/FPGA_1151.hex U be/branches/B.2/xpp/firmwares/FPGA_FXS.hex U be/branches/B.2/xpp/firmwares/USB_1140.hex U be/branches/B.2/xpp/firmwares/USB_1150.hex U be/branches/B.2/xpp/utils/Makefile U be/branches/B.2/xpp/utils/fpga_load.c U be/branches/B.2/xpp/utils/genzaptelconf U be/branches/B.2/xpp/utils/hexfile.c U be/branches/B.2/xpp/utils/hexfile.h U be/branches/B.2/xpp/utils/test_parse.c U be/branches/B.2/xpp/utils/xpp_fxloader U be/branches/B.2/xpp/utils/zconf/Zaptel/Xpp/Xbus.pm U be/branches/B.2/xpp/xbus-core.c U be/branches/B.2/xpp/xbus-core.h U be/branches/B.2/xpp/xpd.h U be/branches/B.2/xpp/xpp_usb.c U be/branches/B.2/xpp/xpp_zap.c U be/branches/B.2/xpp/xpp_zap.h U be/branches/B.2/xpp/xproto.c U be/branches/B.2/xpp/xproto.h U be/branches/B.2/zaptel-base.c U be/branches/B.2/zaptel.h U be/branches/B.2/zaptel.init U be/branches/B.2/zconfig.h U be/branches/B.2/ztmonitor.c ------------------------------------------------------------------------ r2458 | qwell | 2008-06-07 12:50:49 -0500 (Sat, 07 Jun 2008) | 203 lines Merged revisions 2239,2243,2250-2252,2257,2266,2274-2276,2280-2282,2286,2290,2296,2301,2307,2310-2311,2322,2342,2347,2350,2353,2398,2405,2422,2434,2443,2451 via svnmerge from https://origsvn.digium.com/svn/zaptel/branches/1.2 ........ r2239 | tzafrir | 2007-02-27 00:14:18 -0600 (Tue, 27 Feb 2007) | 18 lines Xorcom rev. 3491: * Version of xpp modules is set from xpp/.version, rather than "unknown". * Astribank devices are now initialized in parallel: faster startup when there are multiple Astribanks. * Re-added support for the old format of /proc/xpp/sync write: (echo N 0 > /proc/xpp/sync ) . The new format (SYNC=NN) is preffered. * Firmware update to fix a PCM issue. * Fixed a build issue with kernel 2.6.8 . * Fixed missing initialization in Zaptel::Xpp::Xbus . * genzaptelconf will now set FXS ports as LS by default. To set them as KS, use fxs_default_start=ks in /etc/default/zaptel / /etc/sysconfig/zaptel (Also a workaround for ASTERISK-7551 ). * Groundwork for sync from zaptel master span: if zaptel is built with ZAPTEL_SYNC_TIC (see zaptel/team/tzafrir/sync ), xpp will report its drift from the zaptel sync master. * USB firmware update: had bad lines checksums (and fxload did not report). * fpga_load can now better report bad hex file checksum ;-) . ........ r2243 | tzafrir | 2007-02-27 18:05:59 -0600 (Tue, 27 Feb 2007) | 4 lines * xpp rev. 3495: fix a race in the FXO driver of recent weeks. * Add the Astribank BRI driver (though still needs bristuffed zaptel to build and thus will not build by default) ........ r2250 | kpfleming | 2007-02-28 14:43:42 -0600 (Wed, 28 Feb 2007) | 2 lines correct comment, and set module installation directory before it is needed ........ r2251 | kpfleming | 2007-02-28 14:44:28 -0600 (Wed, 28 Feb 2007) | 2 lines allow the HPEC to work even if echotraining has been requested (the HPEC doesn't do echotraining, but it shouldn't fail just because the user asked for it) ........ r2252 | tzafrir | 2007-02-28 14:57:52 -0600 (Wed, 28 Feb 2007) | 3 lines Make the xpp/utils/Makefile in 1.2 closer to the one in 1.4 (and actually work, this tine). ........ r2257 | tzafrir | 2007-03-01 13:29:12 -0600 (Thu, 01 Mar 2007) | 2 lines SLAB_KERNEL is an obsolete alias of GFP_KERNEL. Fix build on Vanilla 2.6.20 . ........ r2266 | tzafrir | 2007-03-02 14:40:06 -0600 (Fri, 02 Mar 2007) | 2 lines Clarify a cyptic build message. ........ r2274 | tzafrir | 2007-03-02 16:23:45 -0600 (Fri, 02 Mar 2007) | 2 lines Proper initialization of the Astribank (xpp). ........ r2275 | tzafrir | 2007-03-02 16:25:01 -0600 (Fri, 02 Mar 2007) | 2 lines Proper initialization of the Astribank (xpp) at zaptel startup. ........ r2276 | tzafrir | 2007-03-02 16:29:04 -0600 (Fri, 02 Mar 2007) | 2 lines Revert the bogus changeset 2274. ........ r2280 | kpfleming | 2007-03-04 23:34:43 -0600 (Sun, 04 Mar 2007) | 2 lines ensure that we run objdump in the most generic language possible to avoid complications on non-English systems (issue ASTERISK-8930) ........ r2281 | kpfleming | 2007-03-04 23:40:37 -0600 (Sun, 04 Mar 2007) | 2 lines remove stray character that my editor decided to add ........ r2282 | kpfleming | 2007-03-04 23:41:30 -0600 (Sun, 04 Mar 2007) | 2 lines this driver does not use workqueues, so does not need this header (issue ASTERISK-8930) ........ r2286 | tzafrir | 2007-03-05 10:14:11 -0600 (Mon, 05 Mar 2007) | 2 lines Found a proper "marker" for the gfp_t typedef. Now every 2.6.9 is supported. ........ r2290 | tzafrir | 2007-03-07 13:14:30 -0600 (Wed, 07 Mar 2007) | 3 lines Don't die when there is no udev rules dir (on an installtion with INSTALL_PREFIX explicitly set). ........ r2296 | file | 2007-03-08 09:56:05 -0600 (Thu, 08 Mar 2007) | 2 lines vprintk is only available on 2.6.9+ (issue ASTERISK-8965 reported by baconbuttie) ........ r2301 | mattf | 2007-03-09 13:59:43 -0600 (Fri, 09 Mar 2007) | 2 lines Make sure we don't allocate as GFP_KERNEL in atomic context ........ r2307 | mattf | 2007-03-14 11:03:18 -0500 (Wed, 14 Mar 2007) | 2 lines Fix bug in J1 mode configuration. ........ r2310 | tzafrir | 2007-03-16 00:07:33 -0500 (Fri, 16 Mar 2007) | 2 lines Ignoring Module.symvers ........ r2311 | tzafrir | 2007-03-16 00:45:55 -0500 (Fri, 16 Mar 2007) | 5 lines Update the README: * Update modules list * Add a basic list of utilities. * Clarify the location of the kernel source tree. ........ r2322 | file | 2007-03-19 11:28:58 -0500 (Mon, 19 Mar 2007) | 2 lines Update documentation to match current Makefile. linux26 is no longer a valid target. (issue ASTERISK-9025 reported by valley) ........ r2342 | russell | 2007-03-27 13:48:23 -0500 (Tue, 27 Mar 2007) | 5 lines When debug is enabled, ensure that "debug=1" gets passed to the zaptel module, and not just the hardware modules. Also, run "ztcfg -s" at the beginning of the "stop" action of the script. (issue ASTERISK-7215, PCadach and tzafrir) ........ r2347 | russell | 2007-03-29 11:05:32 -0500 (Thu, 29 Mar 2007) | 3 lines Add a README for HPEC, and add support for HPEC in the init script. (issue ASTERISK-9137, chozian) ........ r2350 | russell | 2007-03-29 11:35:37 -0500 (Thu, 29 Mar 2007) | 4 lines Trim the HPEC readme that is included in zaptel to only include basic information as the one on the FTP site will always be the one that contains the full up to date information. Also, tweak some grammar in the additions to the init script. ........ r2353 | qwell | 2007-03-30 13:56:46 -0500 (Fri, 30 Mar 2007) | 4 lines Fix an issue where an echo can was freed incorrectly in certain circumstances. Issue 9292, fix suggested by ddv2005. ........ r2398 | mattf | 2007-04-07 11:49:46 -0500 (Sat, 07 Apr 2007) | 2 lines Fix for ASTERISK-8940. Thanks adomo and Tzafrir! ........ r2405 | mattf | 2007-04-11 14:01:21 -0500 (Wed, 11 Apr 2007) | 4 lines Fix buglet in memory corruption fix. ........ r2422 | qwell | 2007-04-13 18:12:23 -0500 (Fri, 13 Apr 2007) | 14 lines Fix several places where we treat confmode as a bitmask. It is a bitmask...sort of.. I'll explain.. confmode is used for 2 different things. It defines both the "mode" and the "flags" of the conference. The "mode" part is in 0x00FF and is NOT bitwise. The "flag" part is in 0xFF00 and *IS* bitwise. Confused yet? Good. So, when we want to check the "mode" of the conference, we need to check only within 0xFF. There were several places where this was not happening - but due to luck, it worked (...sort of). That's what this patch fixes. ........ r2434 | qwell | 2007-04-24 13:33:29 -0500 (Tue, 24 Apr 2007) | 1 line Backport pre-echocan debugging for ztmonitor ........ r2443 | qwell | 2007-04-25 10:35:34 -0500 (Wed, 25 Apr 2007) | 2 lines Don't try to reference a variable on a channel that may not exist. ........ r2451 | mattf | 2007-04-25 11:26:18 -0500 (Wed, 25 Apr 2007) | 1 line Start fixing potential deadlock between device driver and zaptel ........ ------------------------------------------------------------------------ http://svn.digium.com/view/dahdi?view=rev&revision=2458 |