r1489 - in trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian: . patches patches/series
Christoph Hellwig
hch-guest@haydn.debian.org
Tue, 31 Aug 2004 04:04:30 -0600
Author: hch-guest
Date: 2004-08-31 04:04:15 -0600 (Tue, 31 Aug 2004)
New Revision: 1489
Added:
trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/capi-freeing-fix.dpatch
Modified:
trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/changelog
trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/series/2.6.8-6
Log:
* Add CAPI skb freeing fix (closes: #269134) (Christoph Hellwig).
Modified: trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/changelog
===================================================================
--- trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/changelog 2004-08-31 09:34:18 UTC (rev 1488)
+++ trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/changelog 2004-08-31 10:04:15 UTC (rev 1489)
@@ -22,6 +22,8 @@
* Fix default kernel boot args on openfirmware powerpc (Sven Luther).
+ * Add CAPI skb freeing fix (closes: #269134) (Christoph Hellwig).
+
-- Sven Luther <luther@debian.org> Tue, 31 Aug 2004 11:29:36 +0200
kernel-source-2.6.8 (2.6.8-5) unstable; urgency=high
Added: trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/capi-freeing-fix.dpatch
===================================================================
--- trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/capi-freeing-fix.dpatch 2004-08-31 09:34:18 UTC (rev 1488)
+++ trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/capi-freeing-fix.dpatch 2004-08-31 10:04:15 UTC (rev 1489)
@@ -0,0 +1,186 @@
+#! /bin/sh -e
+## <PATCHNAME>.dpatch by <PATCH_AUTHOR@EMAI>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Description: CAPI skb freeing fix
+## DP: Patch author: Carsten Paeth, Armin Schindler
+## DP: Upstream status: backport
+
+. $(dirname $0)/DPATCH
+
+@DPATCH@
+# This is a BitKeeper generated diff -Nru style patch.
+#
+# ChangeSet
+# 2004/08/27 14:55:01-07:00 armin@melware.de
+# [PATCH] 2.6 ISDN CAPI: low-level drivers skb free fix
+#
+# CAPI skb freeing fix. On sending, the hardware/low-level
+# driver may free a skb on no error only. The application/core
+# side must take care otherwise.
+#
+# Author: Carsten Paeth, Armin Schindler
+#
+# drivers/isdn/capi/capidrv.c
+# 2004/08/27 12:27:24-07:00 armin@melware.de +2 -1
+# 2.6 ISDN CAPI: low-level drivers skb free fix
+#
+# drivers/isdn/hardware/avm/b1.c
+# 2004/08/27 12:51:03-07:00 armin@melware.de +3 -5
+# 2.6 ISDN CAPI: low-level drivers skb free fix
+#
+# drivers/isdn/hardware/avm/b1dma.c
+# 2004/08/27 12:51:03-07:00 armin@melware.de +0 -2
+# 2.6 ISDN CAPI: low-level drivers skb free fix
+#
+# drivers/isdn/hardware/avm/c4.c
+# 2004/08/27 12:51:03-07:00 armin@melware.de +0 -2
+# 2.6 ISDN CAPI: low-level drivers skb free fix
+#
+# drivers/isdn/hardware/avm/t1isa.c
+# 2004/08/27 12:51:03-07:00 armin@melware.de +3 -4
+# 2.6 ISDN CAPI: low-level drivers skb free fix
+#
+# drivers/isdn/hardware/eicon/capifunc.c
+# 2004/08/27 12:57:40-07:00 armin@melware.de +3 -2
+# 2.6 ISDN CAPI: low-level drivers skb free fix
+#
+diff -Nru a/drivers/isdn/capi/capidrv.c b/drivers/isdn/capi/capidrv.c
+--- a/drivers/isdn/capi/capidrv.c 2004-08-30 14:50:12 -07:00
++++ b/drivers/isdn/capi/capidrv.c 2004-08-30 14:50:12 -07:00
+@@ -512,7 +512,8 @@
+ len = CAPIMSG_LEN(cmsg->buf);
+ skb = alloc_skb(len, GFP_ATOMIC);
+ memcpy(skb_put(skb, len), cmsg->buf, len);
+- capi20_put_message(&global.ap, skb);
++ if (capi20_put_message(&global.ap, skb) != CAPI_NOERROR)
++ kfree_skb(skb);
+ }
+
+ /* -------- state machine -------------------------------------------- */
+diff -Nru a/drivers/isdn/hardware/avm/b1.c b/drivers/isdn/hardware/avm/b1.c
+--- a/drivers/isdn/hardware/avm/b1.c 2004-08-30 14:50:12 -07:00
++++ b/drivers/isdn/hardware/avm/b1.c 2004-08-30 14:50:13 -07:00
+@@ -389,7 +389,7 @@
+ CAPIMSG_NCCI(skb->data),
+ CAPIMSG_MSGID(skb->data));
+ if (retval != CAPI_NOERROR)
+- goto out;
++ return retval;
+
+ dlen = CAPIMSG_DATALEN(skb->data);
+
+@@ -399,16 +399,14 @@
+ b1_put_slice(port, skb->data + len, dlen);
+ spin_unlock_irqrestore(&card->lock, flags);
+ } else {
+- retval = CAPI_NOERROR;
+-
+ spin_lock_irqsave(&card->lock, flags);
+ b1_put_byte(port, SEND_MESSAGE);
+ b1_put_slice(port, skb->data, len);
+ spin_unlock_irqrestore(&card->lock, flags);
+ }
+- out:
++
+ dev_kfree_skb_any(skb);
+- return retval;
++ return CAPI_NOERROR;
+ }
+
+ /* ------------------------------------------------------------- */
+diff -Nru a/drivers/isdn/hardware/avm/b1dma.c b/drivers/isdn/hardware/avm/b1dma.c
+--- a/drivers/isdn/hardware/avm/b1dma.c 2004-08-30 14:50:12 -07:00
++++ b/drivers/isdn/hardware/avm/b1dma.c 2004-08-30 14:50:12 -07:00
+@@ -839,8 +839,6 @@
+ }
+ if (retval == CAPI_NOERROR)
+ b1dma_queue_tx(card, skb);
+- else
+- dev_kfree_skb_any(skb);
+
+ return retval;
+ }
+diff -Nru a/drivers/isdn/hardware/avm/c4.c b/drivers/isdn/hardware/avm/c4.c
+--- a/drivers/isdn/hardware/avm/c4.c 2004-08-30 14:50:12 -07:00
++++ b/drivers/isdn/hardware/avm/c4.c 2004-08-30 14:50:12 -07:00
+@@ -1029,8 +1029,6 @@
+ spin_lock_irqsave(&card->lock, flags);
+ c4_dispatch_tx(card);
+ spin_unlock_irqrestore(&card->lock, flags);
+- } else {
+- dev_kfree_skb_any(skb);
+ }
+ return retval;
+ }
+diff -Nru a/drivers/isdn/hardware/avm/t1isa.c b/drivers/isdn/hardware/avm/t1isa.c
+--- a/drivers/isdn/hardware/avm/t1isa.c 2004-08-30 14:50:12 -07:00
++++ b/drivers/isdn/hardware/avm/t1isa.c 2004-08-30 14:50:12 -07:00
+@@ -472,7 +472,7 @@
+ CAPIMSG_NCCI(skb->data),
+ CAPIMSG_MSGID(skb->data));
+ if (retval != CAPI_NOERROR)
+- goto out;
++ return retval;
+
+ dlen = CAPIMSG_DATALEN(skb->data);
+
+@@ -482,16 +482,15 @@
+ t1_put_slice(port, skb->data + len, dlen);
+ spin_unlock_irqrestore(&card->lock, flags);
+ } else {
+- retval = CAPI_NOERROR;
+
+ spin_lock_irqsave(&card->lock, flags);
+ b1_put_byte(port, SEND_MESSAGE);
+ t1_put_slice(port, skb->data, len);
+ spin_unlock_irqrestore(&card->lock, flags);
+ }
+- out:
++
+ dev_kfree_skb_any(skb);
+- return retval;
++ return CAPI_NOERROR;
+ }
+ /* ------------------------------------------------------------- */
+
+diff -Nru a/drivers/isdn/hardware/eicon/capifunc.c b/drivers/isdn/hardware/eicon/capifunc.c
+--- a/drivers/isdn/hardware/eicon/capifunc.c 2004-08-30 14:50:12 -07:00
++++ b/drivers/isdn/hardware/eicon/capifunc.c 2004-08-30 14:50:12 -07:00
+@@ -1,4 +1,4 @@
+-/* $Id: capifunc.c,v 1.61.4.2 2004/05/05 16:09:25 armin Exp $
++/* $Id: capifunc.c,v 1.61.4.5 2004/08/27 20:10:12 armin Exp $
+ *
+ * ISDN interface module for Eicon active cards DIVA.
+ * CAPI Interface common functions
+@@ -998,7 +998,8 @@
+
+ write_end:
+ diva_os_leave_spin_lock(&api_lock, &old_irql, "send message");
+- diva_os_free_message_buffer(dmb);
++ if (retval == CAPI_NOERROR)
++ diva_os_free_message_buffer(dmb);
+ return retval;
+ }
+
+
+-- System Information:
+Debian Release: 3.1
+ APT prefers testing
+ APT policy: (100, 'testing'), (1, 'experimental')
+Architecture: i386 (i686)
+Kernel: Linux 2.6.8-1-686
+Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8
+
+Versions of packages kernel-image-2.6.8-1-686 depends on:
+ii coreutils [fileutils] 5.2.1-2 The GNU core utilities
+ii fileutils 5.2.1-2 The GNU file management utilities
+ii initrd-tools 0.1.73 tools to create initrd image for p
+ii module-init-tools 3.1-pre5-6 tools for managing Linux kernel mo
+
+-- no debconf information
+
+
+--
+To UNSUBSCRIBE, email to debian-kernel-REQUEST@lists.debian.org
+with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Modified: trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/series/2.6.8-6
===================================================================
--- trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/series/2.6.8-6 2004-08-31 09:34:18 UTC (rev 1488)
+++ trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/series/2.6.8-6 2004-08-31 10:04:15 UTC (rev 1489)
@@ -9,3 +9,4 @@
+ microcode-devfs-name.dpatch
+ hfs-loop-fix.dpatch
+ powerpc-cmdline.dpatch
++ capi-freeing-fix.dpatch