[Home]

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-0600Date Closed:2008-06-07 12:50:57
Priority:CriticalRegression?No
Status:Closed/CompleteComponents: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