All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] Patch for minor qemu heap corruption bug when the console is zero width
From: Kenneth Duda @ 2006-04-06  8:53 UTC (permalink / raw)
  To: qemu-devel
In-Reply-To: <6fe044190604060146i4377f13eub00639e764074f2e@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 119 bytes --]

This patch fixes a minor bug that mcheck picked up.  I don't know if
it ever causes problems in practice.

   -Ken

[-- Attachment #2: qemu-zero-width-console.patch --]
[-- Type: text/plain, Size: 663 bytes --]

diff -burN qemu-snapshot-2006-03-27_23.orig/console.c qemu-snapshot-2006-03-27_23/console.c
--- qemu-snapshot-2006-03-27_23.orig/console.c	2006-03-11 07:35:30.000000000 -0800
+++ qemu-snapshot-2006-03-27_23/console.c	2006-04-06 00:25:41.000000000 -0700
@@ -407,7 +407,8 @@
     if (s->width < w1)
         w1 = s->width;
 
-    cells = qemu_malloc(s->width * s->total_height * sizeof(TextCell));
+    cells = qemu_malloc((s->width * s->total_height + 1) * sizeof(TextCell));
+    /* Add one extra in case s->width is 0, so we can still store one character. */
     for(y = 0; y < s->total_height; y++) {
         c = &cells[y * s->width];
         if (w1 > 0) {


^ permalink raw reply

* [U-Boot-Users] Compiled system and target board mismatched while make U-boot image..
From: Charles C.K.Lai @ 2006-04-06  8:58 UTC (permalink / raw)
  To: u-boot

Dear Thomas,

    I make my U-boot image from PC to DBAu1550,
    I used GCC 3.4.4, with mipsel-linux-sdelinux-6.03.01-1 toolchain,
    while I make my U-boot image with U-boot-1.1.4,
    I got the following messages:

    mipsel-linux-ld: hello_world.o: compiled for a little endian system and 
target is big endian
    mipsel-linux-ld: hello_world.o: endianness incompatible with that of the 
selected emulation
    mipsel-linux-ld: failed to merge target specific data of file 
hello_world.o

    I searched for related articles on U-Boot Website and Mailing lists,
    but I can't find out any helpful messages to fix the problem.
    Did I miss some patches? Do you have the reference material for this 
problem?
    Thanks a lot.

    Charles C.K. Lai 

^ permalink raw reply

* Re: Error getting VM-informations with Python on Xen 3.0.2
From: Thorolf Godawa @ 2006-04-06  9:02 UTC (permalink / raw)
  To: xen-devel
In-Reply-To: <20060406002723.GB30672@leeni.uk.xensource.com>

Hi Ewan,

 >Try server.xend.domains(True).  This changed with the new XML-RPC
 >interface, courtesy of the aforementioned hacker.
thanks a lot, this solved my problem :-)))

Is there any documentation how to use these Python-interfaces?
-- 

Chau y hasta luego,

Thorolf

^ permalink raw reply

* [U-Boot-Users] Re: Compiled system and target board mismatched while make U-boot image..
From: Thomas Lange @ 2006-04-06  9:03 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <015a01c65958$4151ecc0$8873608c@11088002601>

Hi.

Use dbau1550 for big endian version.

Use dbau1550_el for little endian version.

Your toolchain is little endian.

Regards,
/Thomas

Charles C.K.Lai wrote:
> Dear Thomas,
> 
>     I make my U-boot image from PC to DBAu1550,
>     I used GCC 3.4.4, with mipsel-linux-sdelinux-6.03.01-1 toolchain,
>     while I make my U-boot image with U-boot-1.1.4,
>     I got the following messages:
> 
>     mipsel-linux-ld: hello_world.o: compiled for a little endian system and 
> target is big endian
>     mipsel-linux-ld: hello_world.o: endianness incompatible with that of the 
> selected emulation
>     mipsel-linux-ld: failed to merge target specific data of file 
> hello_world.o
> 
>     I searched for related articles on U-Boot Website and Mailing lists,
>     but I can't find out any helpful messages to fix the problem.
>     Did I miss some patches? Do you have the reference material for this 
> problem?
>     Thanks a lot.
> 
>     Charles C.K. Lai 
> 
> 

^ permalink raw reply

* Re: [Xen-changelog] Define Xen interface version for tools build.
From: Muli Ben-Yehuda @ 2006-04-06  9:04 UTC (permalink / raw)
  To: Keir Fraser; +Cc: xen-devel
In-Reply-To: <69cd31cce8c5fba523604f999a516e67@cl.cam.ac.uk>

On Thu, Apr 06, 2006 at 07:52:32AM +0100, Keir Fraser wrote:
> 
> On 6 Apr 2006, at 06:54, Muli Ben-Yehuda wrote:
> 
> >> X11_LDPATH = -L/usr/X11R6/$(LIBDIR)
> >>+
> >>+CFLAGS += -D__XEN_INTERFACE_VERSION__=0x00030101
> >
> >This is now another place you have to remember to change the version
> >string. Can we stick it in its own file with nothing else and have
> >other users include it?
> 
> Where would you place it such that it's guaranteed to be included 
> everywhere?

How about something like the attached?
- define XEN_LATEST_INTERFACE_VERSION in Config.mk
- for the tools, it's included from tools/Makefile directly
- for the Xen and kernel builds, generate public/interface.h with it
and include that.
- this has one drawback - the public/ headers aren't self contained
any more, since interface.h needs to be generated before it's
used. The only case is this bits us is if someone copies
include/public.h and tries to use that out of the tree, which doesn't
seem like a very likely occurance.

Comments?

diff -r ece9b5710b29 Config.mk
--- a/Config.mk	Thu Apr 06 00:59:18 2006 +0100
+++ b/Config.mk	Thu Apr 06 12:02:56 2006 +0300
@@ -1,4 +1,6 @@
 # -*- mode: Makefile; -*-
+
+export XEN_LATEST_INTERFACE_VERSION = 0x00030101
 
 # A debug build of Xen and tools?
 debug ?= n
diff -r ece9b5710b29 Makefile
--- a/Makefile	Thu Apr 06 00:59:18 2006 +0100
+++ b/Makefile	Thu Apr 06 12:02:56 2006 +0300
@@ -69,6 +69,7 @@ install-tools:
 	$(MAKE) -C tools install
 
 install-kernels:
+	make -C xen include/public/interface.h
 	for i in $(XKERNELS) ; do $(MAKE) $$i-install || exit 1; done
 
 install-docs:
diff -r ece9b5710b29 tools/Rules.mk
--- a/tools/Rules.mk	Thu Apr 06 00:59:18 2006 +0100
+++ b/tools/Rules.mk	Thu Apr 06 12:02:56 2006 +0300
@@ -12,7 +12,7 @@ XEN_LIBXENSTAT     = $(XEN_ROOT)/tools/x
 
 X11_LDPATH = -L/usr/X11R6/$(LIBDIR)
 
-CFLAGS += -D__XEN_INTERFACE_VERSION__=0x00030101
+CFLAGS += -D__XEN_INTERFACE_VERSION__=$(XEN_LATEST_INTERFACE_VERSION)
 
 %.opic: %.c
 	$(CC) $(CPPFLAGS) -DPIC $(CFLAGS) -fPIC -c -o $@ $<
diff -r ece9b5710b29 xen/Makefile
--- a/xen/Makefile	Thu Apr 06 00:59:18 2006 +0100
+++ b/xen/Makefile	Thu Apr 06 12:02:56 2006 +0300
@@ -54,7 +54,7 @@ debug: FORCE
 
 $(TARGET): delete-unfresh-files
 	$(MAKE) -C tools
-	$(MAKE) -f $(BASEDIR)/Rules.mk include/xen/compile.h
+	$(MAKE) -f $(BASEDIR)/Rules.mk include/xen/compile.h include/public/interface.h
 	$(MAKE) -f $(BASEDIR)/Rules.mk include/xen/acm_policy.h
 	[ -e include/asm ] || ln -sf asm-$(TARGET_ARCH) include/asm
 	$(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) asm-offsets.s
@@ -66,6 +66,9 @@ delete-unfresh-files:
 delete-unfresh-files:
 	@if [ ! -r include/xen/compile.h -o -O include/xen/compile.h ]; then \
 		rm -f include/xen/{banner,compile}.h; \
+	fi
+	@if [ ! -r include/public/interface.h -o -O include/public/interface.h ]; then \
+		rm -f include/public/interface.h; \
 	fi
 
 # acm_policy.h contains security policy for Xen
@@ -103,6 +106,13 @@ include/xen/banner.h:
 	tools/figlet/figlet -d tools/figlet Xen $(XEN_FULLVERSION) > $@.new
 	@mv -f $@.new $@
 
+# interface.h contains our interface version information. Rebuilt on every 'make' invocation.
+include/public/interface.h: LANG=C
+include/public/interface.h: include/public/interface.h.in
+	@sed -e 's/@@xenlatestinterfaceversion@@/$(XEN_LATEST_INTERFACE_VERSION)/g' \
+	    < include/public/interface.h.in > $@.new
+	@mv -f $@.new $@
+
 include/asm-$(TARGET_ARCH)/asm-offsets.h: arch/$(TARGET_ARCH)/asm-offsets.s
 	@(set -e; \
 	  echo "/*"; \
diff -r ece9b5710b29 xen/include/public/xen-compat.h
--- a/xen/include/public/xen-compat.h	Thu Apr 06 00:59:18 2006 +0100
+++ b/xen/include/public/xen-compat.h	Thu Apr 06 12:02:56 2006 +0300
@@ -9,7 +9,7 @@
 #ifndef __XEN_PUBLIC_XEN_COMPAT_H__
 #define __XEN_PUBLIC_XEN_COMPAT_H__
 
-#define __XEN_LATEST_INTERFACE_VERSION__ 0x00030101
+#include "interface.h"
 
 #if defined(__XEN__)
 /* Xen is built with matching headers and implements the latest interface. */
diff -r ece9b5710b29 xen/include/public/interface.h.in
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/public/interface.h.in	Thu Apr 06 12:02:56 2006 +0300
@@ -0,0 +1,1 @@
+#define __XEN_LATEST_INTERFACE_VERSION__ @@xenlatestinterfaceversion@@



-- 
Muli Ben-Yehuda
http://www.mulix.org | http://mulix.livejournal.com/

^ permalink raw reply

* Sendmail & SELinux policies
From: Tanel Kokk @ 2006-04-06  9:09 UTC (permalink / raw)
  To: SELinux

Hello

I made SELinux policies for sendmail on CentOS (seemed, that 
target-policy contains somekind of incomplete policy for sendmail)

Mostly it seems work fine. however some times I find selinux audit-logs 
from dmesg:

audit(1144310301.564:2): avc:  denied  { getattr } for  pid=11789 
comm="sendmail" name="null" dev=sda2 ino=293212 
scontext=user_u:system_r:sendmail_t tcontext=system_u:object_r:device_t 
tclass=chr_file
audit(1144310301.564:3): avc:  denied  { ioctl } for  pid=11789 
comm="sendmail" name="null" dev=sda2 ino=293212 
scontext=user_u:system_r:sendmail_t tcontext=system_u:object_r:device_t 
tclass=chr_file

audit2allow get:
allow sendmail_t device_t:chr_file { getattr ioctl };

However I have this line in ./src/policy/domains/program/local.te:
allow sendmail_t device_t:chr_file { read write getattr ioctl };

As I understand I already have allowing policy record for this 
situation. Why I still got this denied messages for sendmail_t?


-- 
Tanel Kokk


--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply

* [linux-lvm] error in compiling lvm module
From: van @ 2006-04-06  9:16 UTC (permalink / raw)
  To: linux-lvm

[-- Attachment #1: Type: text/plain, Size: 2945 bytes --]

gud day, i have error in compiling(making bzImage) lvm on redhat AS
2.1(2.4.9-e.12smp) . the error is pasted below..hope anyone can help me on
this thanks in advance


drivers/md/mddev.o: In function `add_gendisk':
drivers/md/mddev.o(.text+0x5832): undefined reference to `gendisk_head'
drivers/md/mddev.o(.text+0x5879): undefined reference to `gendisk_head'
drivers/md/mddev.o: In function `del_gendisk':
drivers/md/mddev.o(.text+0x5892): undefined reference to `gendisk_head'
drivers/md/mddev.o: In function `lvm_init':
drivers/md/mddev.o(.text+0x5961): undefined reference to `lvm_init_fs'
drivers/md/mddev.o: In function `lvm_cleanup':
drivers/md/mddev.o(.text+0x5a2b): undefined reference to `lvm_fin_fs'
drivers/md/mddev.o: In function `lvm_do_vg_create':
drivers/md/mddev.o(.text+0x76c0): undefined reference to `lvm_fs_create_vg'
drivers/md/mddev.o: In function `lvm_do_vg_rename':
drivers/md/mddev.o(.text+0x7c80): undefined reference to `lvm_fs_remove_vg'
drivers/md/mddev.o(.text+0x7e84): undefined reference to `lvm_fs_create_vg'
drivers/md/mddev.o(.text+0x7ec0): undefined reference to `lvm_fs_create_pv'
drivers/md/mddev.o(.text+0x7f22): undefined reference to `lvm_fs_create_lv'
drivers/md/mddev.o: In function `lvm_do_vg_remove':
drivers/md/mddev.o(.text+0x7fbb): undefined reference to `lvm_fs_remove_vg'
drivers/md/mddev.o: In function `lvm_do_pv_create':
drivers/md/mddev.o(.text+0x81de): undefined reference to `lvm_fs_create_pv'
drivers/md/mddev.o: In function `lvm_do_pv_remove':
drivers/md/mddev.o(.text+0x8218): undefined reference to `lvm_fs_remove_pv'
drivers/md/mddev.o: In function `lvm_do_lv_create':
drivers/md/mddev.o(.text+0x8ba8): undefined reference to `lvm_fs_create_lv'
drivers/md/mddev.o: In function `lvm_do_lv_remove':
drivers/md/mddev.o(.text+0x8ce7): undefined reference to `lvm_fs_remove_lv'
drivers/md/mddev.o: In function `lvm_do_lv_rename':
drivers/md/mddev.o(.text+0x9d1c): undefined reference to `lvm_fs_remove_lv'
drivers/md/mddev.o(.text+0x9d3b): undefined reference to `lvm_fs_create_lv'
drivers/md/mddev.o: In function `lvm_snapshot_alloc':
drivers/md/mddev.o(.text+0xaa31): undefined reference to `alloc_kiovec'
drivers/md/mddev.o(.text+0xaa64): undefined reference to `alloc_kiovec'
drivers/md/mddev.o(.text+0xaaa3): undefined reference to `free_kiovec'
drivers/md/mddev.o(.text+0xaaca): undefined reference to `free_kiovec'
drivers/md/mddev.o: In function `lvm_snapshot_release':
drivers/md/mddev.o(.text+0xab65): undefined reference to `free_kiovec'
drivers/md/mddev.o(.text+0xab9a): undefined reference to `free_kiovec'
make[1]: *** [kallsyms] Error 1
make[1]: Leaving directory `/usr/src/linux-2.4.9-e.12'
make: *** [vmlinux] Error 2








thnx


Van Brillantes l Sandz Solutions (Philippines), Inc. | 26th floor, yuchengco
tower, rcbc plaza | ayala avenue corner sen. gil puyat avenue | makati city,
1200 philippines | hp: +63 927-8729206 | tel: +63-2-888-5757 | fax:
+63-2-887-1383



[-- Attachment #2: winmail.dat --]
[-- Type: application/ms-tnef, Size: 2612 bytes --]

^ permalink raw reply

* Last active tty
From: Marcelo Taube @ 2006-04-06  9:12 UTC (permalink / raw)
  To: linux-console

Hello,

My name is Marcelo and I am a student in computer science facing a 
project that is getting difficult to implement.

In order to solve some of my problems I would like to get some information.

I would like to know if it is possible in Linux to know from user space 
which is the last active tty attached to an user i choose(the last tty 
which had some activity in it). I will be root or some other user which 
will have the proper privileges. I am willing to do any combination of 
system calls and tricks.

If it is not possible to do from user space then I would like to do it 
myself inside the kernel. I need to know where should I start reading to 
have the knowledge required to do the changes in the kernel (in my local 
copy of course).

I have some knowledge of the kernel and some little experience in 
programming inside the kernel (mainly i played with the scheduler and 
the virtual memory).

Thank you in advance,

Marcelo Taube


^ permalink raw reply

* Re: libata machine check on Alpha
From: Albert Lee @ 2006-04-06  9:17 UTC (permalink / raw)
  To: Jonathan Blake Benson
  Cc: linux-ide, Jeff Garzik, Tejun Heo, Carlos Pardo, Doug Maxey
In-Reply-To: <r4p732p2j7rlui8umeqrq9hothsl79n3bo@4ax.com>

Jonathan Blake Benson wrote:
 
> 
> Albert, enabling the ATAPI_ENABLE_DMADIR workaround did the trick.
> The DVD-ROM drive now works as it should.  Thanks again!
> 

Hi Jonathan,

Could you please give a try to the attached patch and post the content of word 62?
If word 62 + SiI 3611 looks good, we can turn on the DMADIR automatically. Thanks!

--
albert

--- upstream0/drivers/scsi/libata-core.c	2006-04-06 16:07:32.000000000 +0800
+++ upstream0-show/drivers/scsi/libata-core.c	2006-04-06 17:08:10.000000000 +0800
@@ -1322,6 +1322,9 @@ static int ata_dev_configure(struct ata_
 		}
 		dev->cdb_len = (unsigned int) rc;
 
+		printk(KERN_ERR "ata%u: dev %u word 62 [%x]\n",
+		       ap->id, dev->devno, id[62]);
+
 		/* print device info to dmesg */
 		if (print_info)
 			printk(KERN_INFO "ata%u: dev %u ATAPI, max %s\n",


^ permalink raw reply

* Re: [Xen-changelog] Define Xen interface version for tools build.
From: Keir Fraser @ 2006-04-06  9:20 UTC (permalink / raw)
  To: Muli Ben-Yehuda; +Cc: xen-devel
In-Reply-To: <20060406090452.GB16153@granada.merseine.nu>


On 6 Apr 2006, at 10:04, Muli Ben-Yehuda wrote:

> How about something like the attached?
> - define XEN_LATEST_INTERFACE_VERSION in Config.mk
> - for the tools, it's included from tools/Makefile directly
> - for the Xen and kernel builds, generate public/interface.h with it
> and include that.
> - this has one drawback - the public/ headers aren't self contained
> any more, since interface.h needs to be generated before it's
> used. The only case is this bits us is if someone copies
> include/public.h and tries to use that out of the tree, which doesn't
> seem like a very likely occurance.

We'd like to avoid the kernel sparse tree from becoming very 
intertwined with our repository's build system. I like the current 
method of specifying the interface version via Kconfig, and I think the 
independence that gains us outweighs the hassle of having to update 
both the Kconfig and Xen's xen-compat.h.

The tools definition is a bit of a pain I agree. Hence the suggestion 
we pin it to always select the latest interface version, since we 
currently always build tools and hypervisor as a matched pair.

  -- Keir

^ permalink raw reply

* problem compiling 2.6.16.1
From: Paolo Ciarrocchi @ 2006-04-06  9:21 UTC (permalink / raw)
  To: Linux Kernel Mailing List

Hi all,
a friend of mine got this error compiling 2.6.16.1 and we don't know
what's wrong:

uno:/usr/src/linux-2.6.16.1#   make O=/home/dan/build/kernel menuconfig
 HOSTCC  scripts/basic/fixdep
In file included from /usr/include/bits/posix1_lim.h:130,
                from /usr/include/limits.h:144,
                from /usr/lib/gcc-lib/i486-linux/3.3.5/include/limits.h:122,
                from /usr/lib/gcc-lib/i486-linux/3.3.5/include/syslimits.h:7,
                from /usr/lib/gcc-lib/i486-linux/3.3.5/include/limits.h:11,
                from /usr/src/linux-2.6.16.1/scripts/basic/fixdep.c:113:
/usr/include/bits/local_lim.h:36:26: linux/limits.h: No such file or directory
In file included from /usr/include/sys/socket.h:35,
                from /usr/include/netinet/in.h:24,
                from /usr/include/arpa/inet.h:23,
                from /usr/src/linux-2.6.16.1/scripts/basic/fixdep.c:115:
/usr/include/bits/socket.h:305:24: asm/socket.h: No such file or directory
/usr/src/linux-2.6.16.1/scripts/basic/fixdep.c: In function `use_config':
/usr/src/linux-2.6.16.1/scripts/basic/fixdep.c:214: error: `PATH_MAX'
undeclared (first use in this function)
/usr/src/linux-2.6.16.1/scripts/basic/fixdep.c:214: error: (Each
undeclared identifier is reported only once
/usr/src/linux-2.6.16.1/scripts/basic/fixdep.c:214: error: for each
function it appears in.)
/usr/src/linux-2.6.16.1/scripts/basic/fixdep.c:214: warning: unused variable `s'
/usr/src/linux-2.6.16.1/scripts/basic/fixdep.c: In function `parse_dep_file':
/usr/src/linux-2.6.16.1/scripts/basic/fixdep.c:310: error: `PATH_MAX'
undeclared (first use in this function)
/usr/src/linux-2.6.16.1/scripts/basic/fixdep.c:310: warning: unused variable `s'
make[2]: *** [scripts/basic/fixdep] Error 1
make[1]: *** [scripts_basic] Error 2
make: *** [menuconfig] Error 2
uno:/usr/src/linux-2.6.16.1#

Any hint?


--
Paolo
http://paolociarrocchi.googlepages.com

^ permalink raw reply

* Re: BUG: soft lockup detected on CPU#0!
From: Keir Fraser @ 2006-04-06  9:23 UTC (permalink / raw)
  To: Christopher S. Aker; +Cc: xen-devel
In-Reply-To: <44340D3D.8060903@theshore.net>


On 5 Apr 2006, at 19:32, Christopher S. Aker wrote:

> After an update and a reboot, and turning off soft lockup detection, 
> I'm still getting zombie domains.  It also appears that after this 
> happens, no new block devices can be attached.

Okay, this issue should be fixed in both the -unstable and -3.0-testing 
trees. I pushed directly into the 3.0.2 release tree as the original 
blkback kernel-thread loop was very broken indeed. I'm sure the fix is 
a strict improvement. :-)

Look for changeset comment "Fix the blkif_schedule() kthread loop." 
when you pull -- that's the changeset that contains the fix.

  -- Keir

^ permalink raw reply

* Re: [PATCH] Non-polling trace record access
From: Keir Fraser @ 2006-04-06  9:27 UTC (permalink / raw)
  To: Rob Gardner; +Cc: xen-devel
In-Reply-To: <442D6CE6.70704@hp.com>


On 31 Mar 2006, at 18:54, Rob Gardner wrote:

> This is the kernel side code to implement a virtual irq that gets sent 
> when the xen trace buffers become half-full. This allows userland 
> tools such as xentrace and xenmon to avoid polling for new trace 
> records. A future patch will include support for this in XenMon, along 
> with various other enhancements and bug fixes.
>
>  This patch has been tested on x86, x86-64, and x86 SMP machines.

Please re-sync the patch with current tip, and also I think your 
interrupt holdoff logic is unnecessary. I think you can get rid of 
last_virq_sent and test '(buf->prod - buf->cons) == t_buf_highwater'. 
No need for '>=' because the producer is incremented by one each time 
trace() is called so you are bound to equal t_bug_highwater before you 
become greater than it.

  -- Keir

^ permalink raw reply

* Re: freescale lite 5200 board and kernel 2.6
From: Matthias Fechner @ 2006-04-06  9:32 UTC (permalink / raw)
  To: Sylvain Munaut; +Cc: linuxppc-embedded
In-Reply-To: <44344F50.8010401@246tNt.com>

Hello Sylvain,

* Sylvain Munaut <tnt@246tNt.com> [06-04-06 01:14]:
> It made me realize the git commands I gave on my website were kinda
> wrong, I messed
> up git fetch and git pull among other things ...

ah that explains why I have some problems with git.
It seems that on the actual kernel-git-repository something has
changed (kernel.org).
The patch:
git pull http://gitbits.246tNt.com/gitbits/linux-2.6-mpc52xx.git master:mpc52xx

failed last week, so I used the complete repository from your side.
Maybe you can fix this problem, I will adapt then my wiki. :)


Matthias

-- 

"Programming today is a race between software engineers striving to build
bigger and better idiot-proof programs, and the universe trying to produce
bigger and better idiots. So far, the universe is winning." -- Rich Cook

^ permalink raw reply

* [U-Boot-Users] confirm 747996
From: zhangwpxx at sina.com @ 2006-04-06  9:33 UTC (permalink / raw)
  To: u-boot


confirm 747996

===================================================================
????2G????? http://mail.sina.com.cn/chooseMode.html ?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.denx.de/pipermail/u-boot/attachments/20060406/0d7c84d7/attachment.htm 

^ permalink raw reply

* Re: about ll_rw_blk.c of void generic_make_request(struct bio *bio)
From: erich @ 2006-04-06  9:32 UTC (permalink / raw)
  To: Chris Caputo
  Cc: dax, axboe,
	"(廣安科技)安可O",
	"Al Viro", "Andrew Morton",
	"Randy.Dunlap", "Matti Aarnio", linux-kernel,
	"James Bottomley"
In-Reply-To: <Pine.LNX.4.64.0603312028500.14317@nacho.alt.net>

[-- Attachment #1: Type: text/plain, Size: 2637 bytes --]

Dear Chris Caputo,

I am so sorry that I reply this mail today.
At 2006/4/3 my mother unexpectedly got paralysis and dead.
I can not do any more "request testing" with this bug for some days.
I do dump_stack as your request and attach it.
And I do "fsck" before test this volume every time.
It appears fine when do fsck with each testing volume.
You can easily reproduce this bug from copy a 900MB file from ARECA volume 
(mkfs.ext2, mount -t ext2) to none ARECA volume.

Best Regards
Erich Chen

----- Original Message ----- 
From: "Chris Caputo" <ccaputo@alt.net>
To: "Jens Axboe" <axboe@suse.de>
Cc: "erich" <erich@areca.com.tw>; "Andrew Morton" <akpm@osdl.org>; 
<linux-kernel@vger.kernel.org>
Sent: Saturday, April 01, 2006 4:37 AM
Subject: Re: about ll_rw_blk.c of void generic_make_request(struct bio *bio)


> On Fri, 31 Mar 2006, Jens Axboe wrote:
>> On Fri, Mar 31 2006, Chris Caputo wrote:
>> > On Fri, 31 Mar 2006, Chris Caputo wrote:
>> > > On Thu, 30 Mar 2006, Jens Axboe wrote:
>> > > > I can't really say, from my recollection of leafing over lkml 
>> > > > emails, I
>> > > > seem to recall someone saying he hit this with a newer kernel where 
>> > > > as
>> > > > the older one did not?
>> > > >
>> > > > What are the sectors exactly it complains about, eg the full line 
>> > > > you
>> > > > see?
>> > >
>> > > I see:
>> > >
>> > >   attempt to access beyond end of device
>> > >   sdb1: rw=0, want=134744080, limit=128002016
>> >
>> > I believe the "rw=0" means that was a simple read request, and not a
>> > read-ahead.
>>
>> Correct.
>>
>> > 128002016 equals about 62 gigs, which is the correct volume size:
>> >
>> >   Filesystem           1K-blocks      Used Available Use% Mounted on
>> >   /dev/sdb1             62995364   2832696  56962620   5% /xxx
>> >
>> >   /dev/sdb1 on /xxx type ext2 (rw,noatime)
>>
>> How are you reproducing this, through the file system (reading files),
>> or reading the device? If the former, is the file system definitely
>> sound - eg does it pass fsck?
>
> Filesystem level interaction via bonnie++.  Basic repro is, using ccaputo
> user, is:
>
>  mke2fs -j -L /xxx /dev/sdb1
>  mount -t ext2 /dev/sdb1 /xxx
>  cd /xxx ; mkdir ccaputo ; chown ccaputo ccaputo ; cd ccaputo ; su ccaputo
>  /usr/sbin/bonnie++
>
> Filesystem is believed to be sound since it is from a fresh mke2fs.
>
> The one strange thing I do is that I format it as ext3 (-j) but mount it
> as ext2, but I didn't think that would be an issue and I'd be surprised if
> Erich is doing the same in his tests, which also fail, with ext2.  (I do
> it in case I later decide to mount the volume as ext3.)
>
> Chris 

[-- Attachment #2: for_request_of_dump_stack.txt --]
[-- Type: text/plain, Size: 77339 bytes --]

ARECA RAID ADAPTER0: 64BITS PCI BUS DMA ADDRESSING SUPPORTED
ARECA RAID ADAPTER0: FIRMWARE VERSION V1.39 2006-2-9
scsi1 : ARECA SATA HOST ADAPTER RAID CONTROLLER (RAID6-ENGINE Inside)
        Driver Version 1.20.0X.13
  Vendor: Areca     Model: ARC-1160-VOL#00   Rev: R001
  Type:   Direct-Access                      ANSI SCSI revision: 03
SCSI device sda: 781249536 512-byte hdwr sectors (400000 MB)
sda: Write Protect is off
sda: Mode Sense: cb 00 00 08
SCSI device sda: drive cache: write back
SCSI device sda: 781249536 512-byte hdwr sectors (400000 MB)
sda: Write Protect is off
sda: Mode Sense: cb 00 00 08
SCSI device sda: drive cache: write back
 sda: sda1
sd 1:0:0:0: Attached scsi disk sda
sd 1:0:0:0: Attached scsi generic sg0 type 0
  Vendor: Areca     Model: ARC-1160-VOL#01   Rev: R001
  Type:   Direct-Access                      ANSI SCSI revision: 03
SCSI device sdb: 312499712 512-byte hdwr sectors (160000 MB)
sdb: Write Protect is off
sdb: Mode Sense: cb 00 00 08
SCSI device sdb: drive cache: write back
SCSI device sdb: 312499712 512-byte hdwr sectors (160000 MB)
sdb: Write Protect is off
sdb: Mode Sense: cb 00 00 08
SCSI device sdb: drive cache: write back
 sdb: sdb1
sd 1:0:1:0: Attached scsi disk sdb
sd 1:0:1:0: Attached scsi generic sg1 type 0
  Vendor: Areca     Model: ARC-1160-VOL#02   Rev: R001
  Type:   Direct-Access                      ANSI SCSI revision: 03
SCSI device sdc: 312499712 512-byte hdwr sectors (160000 MB)
sdc: Write Protect is off
sdc: Mode Sense: cb 00 00 08
SCSI device sdc: drive cache: write back
SCSI device sdc: 312499712 512-byte hdwr sectors (160000 MB)
sdc: Write Protect is off
sdc: Mode Sense: cb 00 00 08
SCSI device sdc: drive cache: write back
 sdc: sdc1
sd 1:0:2:0: Attached scsi disk sdc
sd 1:0:2:0: Attached scsi generic sg2 type 0
  Vendor: Areca     Model: RAID controller   Rev: R001
  Type:   Processor                          ANSI SCSI revision: 00
 1:0:16:0: Attached scsi generic sg3 type 3
arcmsr device major number 254
linux:~ # fsck /dev/sdb1
fsck 1.38 (30-Jun-2005)
e2fsck 1.38 (30-Jun-2005)
/mnt/sdb1 (/dev/sdb1): clean, 12/19546112 files, 876811/39062039 blocks
linux:~ # mount /dev/sdb1 /mnt/sdb1
linux:~ # cp /mnt/sdb1/aa ./ff
cp: reading `/mnt/sdb1/aa': Input/output error
#dump
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sdb1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
maxsector=312496317 nr_sectors=8 sector=757935400
attempt to access beyond end of device
sdb1: rw=0, want=22232771888, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757934808
attempt to access beyond end of device
sdb1: rw=0, want=12126967088, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757935408
attempt to access beyond end of device
sdb1: rw=0, want=12126966488, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757934800
attempt to access beyond end of device
sdb1: rw=0, want=22232771288, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757935400
attempt to access beyond end of device
sdb1: rw=0, want=22232771888, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757934808
attempt to access beyond end of device
sdb1: rw=0, want=12126967088, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757935408
attempt to access beyond end of device
sdb1: rw=0, want=12126966488, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757934800
attempt to access beyond end of device
sdb1: rw=0, want=22232771288, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757935400
attempt to access beyond end of device
sdb1: rw=0, want=22232771888, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757934808
attempt to access beyond end of device
sdb1: rw=0, want=12126967088, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757935408
attempt to access beyond end of device
sdb1: rw=0, want=12126966488, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757934800
attempt to access beyond end of device
sdb1: rw=0, want=22232771288, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757935400
attempt to access beyond end of device
sdb1: rw=0, want=22232771888, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757934808
attempt to access beyond end of device
sdb1: rw=0, want=12126967088, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757935408
attempt to access beyond end of device
sdb1: rw=0, want=12126966488, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757934800
attempt to access beyond end of device
sdb1: rw=0, want=22232771288, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757935400
attempt to access beyond end of device
sdb1: rw=0, want=22232771888, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757934808
attempt to access beyond end of device
sdb1: rw=0, want=12126967088, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757935408
attempt to access beyond end of device
sdb1: rw=0, want=12126966488, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015b23c>{__alloc_pages+87} <ffffffff8021af8b>{radix_tree_node_alloc+19}
       <ffffffff8021b3b5>{radix_tree_insert+244} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757934800
attempt to access beyond end of device
sdb1: rw=0, want=22232771288, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8021af8b>{radix_tree_node_alloc+19} <ffffffff8021b3b5>{radix_tree_insert+244}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8015d571>{__pagevec_lru_add+204}
       <ffffffff8019a42f>{mpage_bio_submit+31} <ffffffff8019b36e>{mpage_readpages+277}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757935400
attempt to access beyond end of device
sdb1: rw=0, want=22232771888, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015b23c>{__alloc_pages+87}
       <ffffffff8015c910>{__do_page_cache_readahead+318} <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757934808
attempt to access beyond end of device
sdb1: rw=0, want=12126967088, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015b23c>{__alloc_pages+87}
       <ffffffff8015c910>{__do_page_cache_readahead+318} <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757935408
attempt to access beyond end of device
sdb1: rw=0, want=12126966488, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015b23c>{__alloc_pages+87}
       <ffffffff8015c910>{__do_page_cache_readahead+318} <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757934800
attempt to access beyond end of device
sdb1: rw=0, want=22232771288, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015b23c>{__alloc_pages+87}
       <ffffffff8015c910>{__do_page_cache_readahead+318} <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757935400
attempt to access beyond end of device
sdb1: rw=0, want=22232771888, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015b23c>{__alloc_pages+87}
       <ffffffff8015c910>{__do_page_cache_readahead+318} <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757934808
attempt to access beyond end of device
sdb1: rw=0, want=12126967088, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015b23c>{__alloc_pages+87}
       <ffffffff8015c910>{__do_page_cache_readahead+318} <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757935408
attempt to access beyond end of device
sdb1: rw=0, want=12126966488, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015b23c>{__alloc_pages+87}
       <ffffffff8015c910>{__do_page_cache_readahead+318} <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757934800
attempt to access beyond end of device
sdb1: rw=0, want=22232771288, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015b23c>{__alloc_pages+87}
       <ffffffff8015c910>{__do_page_cache_readahead+318} <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757935400
attempt to access beyond end of device
sdb1: rw=0, want=22232771888, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015b23c>{__alloc_pages+87}
       <ffffffff8015c910>{__do_page_cache_readahead+318} <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757934808
attempt to access beyond end of device
sdb1: rw=0, want=12126967088, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015b23c>{__alloc_pages+87}
       <ffffffff8015c910>{__do_page_cache_readahead+318} <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757935408
attempt to access beyond end of device
sdb1: rw=0, want=12126966488, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015b23c>{__alloc_pages+87}
       <ffffffff8015c910>{__do_page_cache_readahead+318} <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757934800
attempt to access beyond end of device
sdb1: rw=0, want=22232771288, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757935400
attempt to access beyond end of device
sdb1: rw=0, want=22232771888, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757934808
attempt to access beyond end of device
sdb1: rw=0, want=12126967088, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757935408
attempt to access beyond end of device
sdb1: rw=0, want=12126966488, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757934800
attempt to access beyond end of device
sdb1: rw=0, want=22232771288, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757935400
attempt to access beyond end of device
sdb1: rw=0, want=22232771888, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757934808
attempt to access beyond end of device
sdb1: rw=0, want=12126967088, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757935408
attempt to access beyond end of device
sdb1: rw=0, want=12126966488, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757934800
attempt to access beyond end of device
sdb1: rw=0, want=22232771288, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757935400
attempt to access beyond end of device
sdb1: rw=0, want=22232771888, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757934808
attempt to access beyond end of device
sdb1: rw=0, want=12126967088, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757935408
attempt to access beyond end of device
sdb1: rw=0, want=12126966488, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757934800
attempt to access beyond end of device
sdb1: rw=0, want=22232771288, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757935400
attempt to access beyond end of device
sdb1: rw=0, want=22232771888, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757934808
attempt to access beyond end of device
sdb1: rw=0, want=12126967088, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757935408
attempt to access beyond end of device
sdb1: rw=0, want=12126966488, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757934800
attempt to access beyond end of device
sdb1: rw=0, want=22232771288, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757935400
attempt to access beyond end of device
sdb1: rw=0, want=22232771888, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757934808
attempt to access beyond end of device
sdb1: rw=0, want=12126967088, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=-757935408
attempt to access beyond end of device
sdb1: rw=0, want=12126966488, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a833>{do_mpage_readpage+686} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff80182c45>{inode_get_bytes+16} <ffffffff880cb1f1>{:reiserfs:inode2sd+246}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8019b301>{mpage_readpages+168}
       <ffffffff882a7d0b>{:ext3:ext3_get_block+0} <ffffffff8015c910>{__do_page_cache_readahead+318}
       <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757934800
attempt to access beyond end of device
sdb1: rw=0, want=22232771288, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff880db298>{:reiserfs:pathrelse+35} <ffffffff8020ddd9>{submit_bio+184}
       <ffffffff8015d571>{__pagevec_lru_add+204} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019b36e>{mpage_readpages+277} <ffffffff882a7d0b>{:ext3:ext3_get_block+0}
       <ffffffff8015c910>{__do_page_cache_readahead+318} <ffffffff880ce0a4>{:reiserfs:reiserfs_submit_file_region_for_write+408}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff880d01c1>{:reiserfs:reiserfs_file_write+5813}
       <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8015cd19>{make_ahead_window+129} <ffffffff8015ce8c>{page_cache_readahead+347}
       <ffffffff801575cc>{do_generic_mapping_read+294} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757935400
attempt to access beyond end of device
sdb1: rw=0, want=22232771888, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8019a42f>{mpage_bio_submit+31}
       <ffffffff8019a96e>{mpage_readpage+51} <ffffffff801576a5>{do_generic_mapping_read+511}
       <ffffffff801563d1>{file_read_actor+0} <ffffffff80157f86>{__generic_file_aio_read+334}
       <ffffffff80158174>{generic_file_aio_read+52} <ffffffff8017a2d2>{do_sync_read+199}
       <ffffffff80143420>{autoremove_wake_function+0} <ffffffff8017a54d>{vfs_read+203}
       <ffffffff8017afaa>{sys_read+69} <ffffffff8010a8fe>{system_call+126}
maxsector=312496317 nr_sectors=8 sector=757935400
attempt to access beyond end of device
sdb1: rw=0, want=22232771888, limit=312496317

Call Trace: <ffffffff8020d8a8>{generic_make_request+163}
       <ffffffff8020ddd9>{submit_bio+184} <ffffffff8015cc39>{blockable_page_cache_readahead+83}
       <ffffffff8019a42f>{mpage_bio_submit+31} <ffffffff8019a96e>{mpage_readpage+51}
       <ffffffff801576a5>{do_generic_mapping_read+511} <ffffffff801563d1>{file_read_actor+0}
       <ffffffff80157f86>{__generic_file_aio_read+334} <ffffffff80158174>{generic_file_aio_read+52}
       <ffffffff8017a2d2>{do_sync_read+199} <ffffffff80143420>{autoremove_wake_function+0}
       <ffffffff8017a54d>{vfs_read+203} <ffffffff8017afaa>{sys_read+69}
       <ffffffff8010a8fe>{system_call+126}
linux:~ #








^ permalink raw reply

* [Qemu-devel] SMP
From: Jacek Poplawski @ 2006-04-06  9:40 UTC (permalink / raw)
  To: qemu-devel

Hello.

Does "-smp 2" option use both CPUs of my host, or only one?
I had impression that "smp" if just emulated, because my compilation 
inside target OS is two times longer...

Is there any way to use two host CPUs in Qemu?


The information contained in this e-mail and in any attachments is confidential and is designated solely for the attention of the intended recipient(s). If you are not an intended recipient, you must not use, disclose, copy, distribute or retain this e-mail or any part thereof. If you have received this e-mail in error, please notify the sender by return e-mail and delete all copies of this e-mail from your computer system(s).
Please direct any additional queries to: communications@s3group.com.
Thank You.

^ permalink raw reply

* Re: ipset command ipporthash anormal behavior
From: Jozsef Kadlecsik @ 2006-04-06  9:54 UTC (permalink / raw)
  To: Clist; +Cc: netfilter
In-Reply-To: <200604041446.01536.clist@uah.es>

[-- Attachment #1: Type: TEXT/PLAIN, Size: 928 bytes --]

Hi,

On Tue, 4 Apr 2006, Clist wrote:

> ipset -N clients ipporthash --from 192.168.153.206 --to 192.168.153.207
> --hashsize 1024 --probes 4 --resize 50 || echo "failure .."
>
> it prints :
>
> "failure .."
>
> But the set got created!!.
>
> This is confusing and make my script run bad, if the commnad ran sucessfully,
>
> Why it returns error code !=0 to the OS??

That's a small bug: the set specific parse function returns 1 when it
could parse the command line successfully and this return value is not
erased later, but used as the final return value of the ipset command.

There'll be a new release somewhere in this month: until then you can use
the attached patch.

Best regards,
Jozsef
-
E-mail  : kadlec@blackhole.kfki.hu, kadlec@sunserv.kfki.hu
PGP key : http://www.kfki.hu/~kadlec/pgp_public_key.txt
Address : KFKI Research Institute for Particle and Nuclear Physics
          H-1525 Budapest 114, POB. 49, Hungary

[-- Attachment #2: ipset-create.patch --]
[-- Type: TEXT/PLAIN, Size: 350 bytes --]

diff -urN ipset-2.2.8/ipset.c ipset-2.2.9/ipset.c
--- ipset-2.2.8/ipset.c	2005-11-24 10:08:57.000000000 +0100
+++ ipset-2.2.9/ipset.c	2006-04-06 11:51:28.000000000 +0200
@@ -2099,7 +2099,8 @@
 					exit_error(PARAMETER_PROBLEM,
 						   "Unknown arg `%s'",
 						   argv[optind - 1]);
-
+				
+				res = 0;
 			}
 
 			DP("next arg");

^ permalink raw reply

* [PATCH] Futher fix memory barrier docs wrt atomic ops
From: David Howells @ 2006-04-06  9:53 UTC (permalink / raw)
  To: torvalds, akpm, Nick Piggin
  Cc: David Howells, linux-kernel, linux-arch, davem
In-Reply-To: <44338EA9.3020102@yahoo.com.au>


Further fix the memory barrier documents to portray bitwise operation memory
barrier effects correctly following Nick Piggin's comments.

It makes the point that any atomic op that both modifies some state in memory
and returns information on that state implies memory barriers on both sides.

This patch depends on:

	[PATCH] Fix memory barrier docs wrt atomic ops 

Signed-Off-By: David Howells <dhowells@redhat.com>
---
warthog>diffstat -p1 /tmp/mb.diff 
 Documentation/memory-barriers.txt |   39 ++++++++++++++++++--------------------
 1 file changed, 19 insertions(+), 20 deletions(-)

diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt
index 822fc45..92f0056 100644
--- a/Documentation/memory-barriers.txt
+++ b/Documentation/memory-barriers.txt
@@ -1282,10 +1282,12 @@ operations are noted specially as some o
 some don't, but they're very heavily relied on as a group throughout the
 kernel.
 
-Any atomic_t operation, for instance, that returns a value implies an
-SMP-conditional general memory barrier (smp_mb()) on each side of the actual
-operation.  These include:
+Any atomic operation that modifies some state in memory and returns information
+about the state (old or new) implies an SMP-conditional general memory barrier
+(smp_mb()) on each side of the actual operation.  These include:
 
+	xchg();
+	cmpxchg();
 	atomic_cmpxchg();
 	atomic_inc_return();
 	atomic_dec_return();
@@ -1296,31 +1298,31 @@ operation.  These include:
 	atomic_sub_and_test();
 	atomic_add_negative();
 	atomic_add_unless();
-
-
-The following, however, do _not_ imply memory barrier effects:
-
-	xchg();
-	cmpxchg();
 	test_and_set_bit();
 	test_and_clear_bit();
 	test_and_change_bit();
 
-These may be used for such things as implementing LOCK-class operations.  In
-such cases they need explicit memory barriers.
+These are used for such things as implementing LOCK-class and UNLOCK-class
+operations and adjusting reference counters towards object destruction, and as
+such the implicit memory barrier effects are necessary.
+
 
-The following are also potential offenders as they may be used as UNLOCK-class
-operations, amongst other things, but do _not_ imply memory barriers either:
+The following operation are potential problems as they do _not_ imply memory
+barriers, but might be used for implementing such things as UNLOCK-class
+operations:
 
+	atomic_set();
 	set_bit();
 	clear_bit();
 	change_bit();
-	atomic_set();
 
-With these the appropriate explicit memory barrier should be used if necessary.
+With these the appropriate explicit memory barrier should be used if necessary
+(smp_mb__before_clear_bit() for instance).
 
 
-The following also don't imply memory barriers, and so may be a little tricky:
+The following also do _not_ imply memory barriers, and so may require explicit
+memory barriers under some circumstances (smp_mb__before_atomic_dec() for
+instance)):
 
 	atomic_add();
 	atomic_sub();
@@ -1341,10 +1343,7 @@ specific order.
 
 
 Basically, each usage case has to be carefully considered as to whether memory
-barriers are needed or not.  The simplest rule is probably: if the atomic
-operation is protected by a lock, then it does not require a barrier unless
-there's another operation within the critical section with respect to which an
-ordering must be maintained.
+barriers are needed or not.
 
 [!] Note that special memory barrier primitives are available for these
 situations because on some CPUs the atomic instructions used imply full memory

^ permalink raw reply related

* Re: [Xen-changelog] Define Xen interface version for tools build.
From: Muli Ben-Yehuda @ 2006-04-06  9:56 UTC (permalink / raw)
  To: Keir Fraser; +Cc: xen-devel
In-Reply-To: <31c6451e30d27e1d516a01afc2d99cfa@cl.cam.ac.uk>

On Thu, Apr 06, 2006 at 10:20:07AM +0100, Keir Fraser wrote:

> We'd like to avoid the kernel sparse tree from becoming very 
> intertwined with our repository's build system. I like the current 
> method of specifying the interface version via Kconfig,

Kconfig only specifies the interface version the kernel supports, not
the "latest Xen interface version". Inherenly specifying the latet
interface version Xen supports should be done in a Xen specific
file. We are currently using the same file (xen-compat.h) in both Xen
and the kernel build, which is pretty warty. Perhaps the check against
the Xen version should be done only in run time?

> and I think the 
> independence that gains us outweighs the hassle of having to update 
> both the Kconfig and Xen's xen-compat.h.

Sure, it's not a major issue. Just one (more) potential headache.

> The tools definition is a bit of a pain I agree. Hence the suggestion 
> we pin it to always select the latest interface version, since we 
> currently always build tools and hypervisor as a matched pair.

I agree that the kernel should be seperate from Xen. If the kernel and
Xen each their own copy of xen-compat.h, we could have one (shared)
definition for Xen and tools and one definition for the kernel. Are
there any plans to switch to the seperate kernel hg tree as the "main"
kernel repository instead of the sparse tree soon?

Cheers,
Muli
-- 
Muli Ben-Yehuda
http://www.mulix.org | http://mulix.livejournal.com/

^ permalink raw reply

* [NETFILTER 00/12]: Netfilter Update
From: Patrick McHardy @ 2006-04-06 10:04 UTC (permalink / raw)
  To: davem; +Cc: netfilter-devel, Patrick McHardy

Hi Dave,

following are a couple of netfilter fixes and enhancements: a couple of
patches to fix the section mismatch warnings and clean up the netfilter
hook registration, checksumming consolidation with better HW checksum
error handling and some cleanup patches for the H.323 helper. The
diffstat is a bit misleading, there is a lot of noise from the renaming
of two large H.323 header files and a lot of reindentation of netfilter
structures, its not as bad as it looks :) If you think its too large
for -rc1 I can hold on to the checksumming patches, the others should
go in as they actually fix stuff. Thanks.


 include/linux/netfilter.h                                     |   42 
 include/linux/netfilter_ipv4.h                                |    2 
 include/linux/netfilter_ipv4/ip_conntrack_h323.h              |   52 
 include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h  |   98 +
 include/linux/netfilter_ipv4/ip_conntrack_helper_h323_types.h |  938 ++++++++++
 include/linux/netfilter_ipv6.h                                |    3 
 net/ipv4/netfilter.c                                          |   50 
 net/ipv4/netfilter/Kconfig                                    |    1 
 net/ipv4/netfilter/arptable_filter.c                          |   19 
 net/ipv4/netfilter/ip_conntrack_helper_h323.c                 |   50 
 net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c            |    2 
 net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.h            |   98 -
 net/ipv4/netfilter/ip_conntrack_helper_h323_types.h           |  938 ----------
 net/ipv4/netfilter/ip_conntrack_proto_icmp.c                  |   23 
 net/ipv4/netfilter/ip_conntrack_proto_tcp.c                   |    7 
 net/ipv4/netfilter/ip_conntrack_proto_udp.c                   |    7 
 net/ipv4/netfilter/ip_conntrack_standalone.c                  |  270 +-
 net/ipv4/netfilter/ip_nat_helper_h323.c                       |   58 
 net/ipv4/netfilter/ip_nat_standalone.c                        |  161 -
 net/ipv4/netfilter/ip_queue.c                                 |   31 
 net/ipv4/netfilter/ipt_CLUSTERIP.c                            |   40 
 net/ipv4/netfilter/ipt_REJECT.c                               |    9 
 net/ipv4/netfilter/iptable_filter.c                           |   21 
 net/ipv4/netfilter/iptable_mangle.c                           |   33 
 net/ipv4/netfilter/iptable_raw.c                              |   35 
 net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c                |  227 --
 net/ipv4/netfilter/nf_conntrack_proto_icmp.c                  |   20 
 net/ipv6/netfilter.c                                          |   51 
 net/ipv6/netfilter/ip6_queue.c                                |   31 
 net/ipv6/netfilter/ip6table_filter.c                          |   21 
 net/ipv6/netfilter/ip6table_mangle.c                          |   33 
 net/ipv6/netfilter/ip6table_raw.c                             |   15 
 net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c                |  181 -
 net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c                |   12 
 net/netfilter/core.c                                          |   51 
 net/netfilter/nf_conntrack_proto_tcp.c                        |   50 
 net/netfilter/nf_conntrack_proto_udp.c                        |   50 
 net/netfilter/nf_conntrack_standalone.c                       |  115 -
 net/netfilter/nf_queue.c                                      |   49 
 net/netfilter/nfnetlink_log.c                                 |   25 
 net/netfilter/nfnetlink_queue.c                               |   27 
 41 files changed, 1799 insertions(+), 2147 deletions(-)

Jing Min Zhao:
      [NETFILTER]: H.323 helper: move some function prototypes to ip_conntrack_h323.h
      [NETFILTER]: H.323 helper: change EXPORT_SYMBOL to EXPORT_SYMBOL_GPL
      [NETFILTER]: H.323 helper: make get_h245_addr() static
      [NETFILTER]: H.323 helper: add parameter 'default_rrq_ttl'
      [NETFILTER]: H.323 helper: update Changelog

Patrick McHardy:
      [NETFILTER]: Add helper functions for mass hook registration/unregistration
      [NETFILTER]: Clean up hook registration
      [NETFILTER]: Fix section mismatch warnings
      [NETFILTER]: Fix IP_NF_CONNTRACK_NETLINK dependency
      [NETFILTER]: Introduce infrastructure for address family specific operations
      [NETFILTER]: Add address family specific checksum helpers
      [NETFILTER]: Convert conntrack/ipt_REJECT to new checksumming functions

^ permalink raw reply

* [NETFILTER 01/12]: Add helper functions for mass hook registration/unregistration
From: Patrick McHardy @ 2006-04-06 10:04 UTC (permalink / raw)
  To: davem; +Cc: netfilter-devel, Patrick McHardy
In-Reply-To: <20060406100452.17409.37120.sendpatchset@localhost.localdomain>

[NETFILTER]: Add helper functions for mass hook registration/unregistration

Signed-off-by: Patrick McHardy <kaber@trash.net>

---
commit 3bf0d209e539917efcc5286b8f1cab2856ebdd49
tree 4c5840cf32ee69cc6138534d24c4d43a23fad557
parent 32a976a8703b098e898a9a13f9ddcabbf654e7d8
author Patrick McHardy <kaber@trash.net> Thu, 06 Apr 2006 11:32:05 +0200
committer Patrick McHardy <kaber@trash.net> Thu, 06 Apr 2006 11:32:05 +0200

 include/linux/netfilter.h |    2 ++
 net/netfilter/core.c      |   28 ++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h
index 412e52c..5aa9316 100644
--- a/include/linux/netfilter.h
+++ b/include/linux/netfilter.h
@@ -110,6 +110,8 @@ struct nf_info
 /* Function to register/unregister hook points. */
 int nf_register_hook(struct nf_hook_ops *reg);
 void nf_unregister_hook(struct nf_hook_ops *reg);
+int nf_register_hooks(struct nf_hook_ops *reg, unsigned int n);
+void nf_unregister_hooks(struct nf_hook_ops *reg, unsigned int n);
 
 /* Functions to register get/setsockopt ranges (non-inclusive).  You
    need to check permissions yourself! */
diff --git a/net/netfilter/core.c b/net/netfilter/core.c
index 1ceb1a6..5c7143e 100644
--- a/net/netfilter/core.c
+++ b/net/netfilter/core.c
@@ -63,6 +63,34 @@ void nf_unregister_hook(struct nf_hook_o
 }
 EXPORT_SYMBOL(nf_unregister_hook);
 
+int nf_register_hooks(struct nf_hook_ops *reg, unsigned int n)
+{
+	unsigned int i;
+	int err = 0;
+
+	for (i = 0; i < n; i++) {
+		err = nf_register_hook(&reg[i]);
+		if (err)
+			goto err;
+	}
+	return err;
+
+err:
+	if (i > 0)
+		nf_unregister_hooks(reg, i - i);
+	return err;
+}
+EXPORT_SYMBOL(nf_register_hooks);
+
+void nf_unregister_hooks(struct nf_hook_ops *reg, unsigned int n)
+{
+	unsigned int i;
+
+	for (i = 0; i < n; i++)
+		nf_unregister_hook(&reg[i]);
+}
+EXPORT_SYMBOL(nf_unregister_hooks);
+
 unsigned int nf_iterate(struct list_head *head,
 			struct sk_buff **skb,
 			int hook,

^ permalink raw reply related

* [NETFILTER 02/12]: Clean up hook registration
From: Patrick McHardy @ 2006-04-06 10:04 UTC (permalink / raw)
  To: davem; +Cc: netfilter-devel, Patrick McHardy
In-Reply-To: <20060406100452.17409.37120.sendpatchset@localhost.localdomain>

[NETFILTER]: Clean up hook registration

Clean up hook registration by makeing use of the new mass registration and
unregistration helpers.

Signed-off-by: Patrick McHardy <kaber@trash.net>

---
commit 2f8e62d3a554aee067771c5146a1e29feecd2758
tree ea5cdb8d6c319c334007c87c1e859ae0ed41f3f5
parent 3bf0d209e539917efcc5286b8f1cab2856ebdd49
author Patrick McHardy <kaber@trash.net> Thu, 06 Apr 2006 11:34:13 +0200
committer Patrick McHardy <kaber@trash.net> Thu, 06 Apr 2006 11:34:13 +0200

 net/ipv4/netfilter/arptable_filter.c           |   19 +-
 net/ipv4/netfilter/ip_conntrack_standalone.c   |  180 ++++++++---------------
 net/ipv4/netfilter/ip_nat_standalone.c         |  143 +++++++-----------
 net/ipv4/netfilter/iptable_filter.c            |   21 ---
 net/ipv4/netfilter/iptable_mangle.c            |   33 ----
 net/ipv4/netfilter/iptable_raw.c               |   35 ++--
 net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c |  189 ++++++++----------------
 net/ipv6/netfilter/ip6table_filter.c           |   21 ---
 net/ipv6/netfilter/ip6table_mangle.c           |   33 ----
 net/ipv6/netfilter/ip6table_raw.c              |   15 --
 net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c |  143 ++++++------------
 11 files changed, 253 insertions(+), 579 deletions(-)

diff --git a/net/ipv4/netfilter/arptable_filter.c b/net/ipv4/netfilter/arptable_filter.c
index d0d379c..d7c472f 100644
--- a/net/ipv4/netfilter/arptable_filter.c
+++ b/net/ipv4/netfilter/arptable_filter.c
@@ -181,33 +181,26 @@ static struct nf_hook_ops arpt_ops[] = {
 
 static int __init arptable_filter_init(void)
 {
-	int ret, i;
+	int ret;
 
 	/* Register table */
 	ret = arpt_register_table(&packet_filter, &initial_table.repl);
 	if (ret < 0)
 		return ret;
 
-	for (i = 0; i < ARRAY_SIZE(arpt_ops); i++)
-		if ((ret = nf_register_hook(&arpt_ops[i])) < 0)
-			goto cleanup_hooks;
+	ret = nf_register_hooks(arpt_ops, ARRAY_SIZE(arpt_ops));
+	if (ret < 0)
+		goto cleanup_table;
 	return ret;
 
-cleanup_hooks:
-	while (--i >= 0)
-		nf_unregister_hook(&arpt_ops[i]);
-
+cleanup_table:
 	arpt_unregister_table(&packet_filter);
 	return ret;
 }
 
 static void __exit arptable_filter_fini(void)
 {
-	unsigned int i;
-
-	for (i = 0; i < ARRAY_SIZE(arpt_ops); i++)
-		nf_unregister_hook(&arpt_ops[i]);
-
+	nf_unregister_hooks(arpt_ops, ARRAY_SIZE(arpt_ops));
 	arpt_unregister_table(&packet_filter);
 }
 
diff --git a/net/ipv4/netfilter/ip_conntrack_standalone.c b/net/ipv4/netfilter/ip_conntrack_standalone.c
index 5207602..adc1a0f 100644
--- a/net/ipv4/netfilter/ip_conntrack_standalone.c
+++ b/net/ipv4/netfilter/ip_conntrack_standalone.c
@@ -469,70 +469,63 @@ static unsigned int ip_conntrack_local(u
 
 /* Connection tracking may drop packets, but never alters them, so
    make it the first hook. */
-static struct nf_hook_ops ip_conntrack_defrag_ops = {
-	.hook		= ip_conntrack_defrag,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_PRE_ROUTING,
-	.priority	= NF_IP_PRI_CONNTRACK_DEFRAG,
-};
-
-static struct nf_hook_ops ip_conntrack_in_ops = {
-	.hook		= ip_conntrack_in,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_PRE_ROUTING,
-	.priority	= NF_IP_PRI_CONNTRACK,
-};
-
-static struct nf_hook_ops ip_conntrack_defrag_local_out_ops = {
-	.hook		= ip_conntrack_defrag,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_LOCAL_OUT,
-	.priority	= NF_IP_PRI_CONNTRACK_DEFRAG,
-};
-
-static struct nf_hook_ops ip_conntrack_local_out_ops = {
-	.hook		= ip_conntrack_local,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_LOCAL_OUT,
-	.priority	= NF_IP_PRI_CONNTRACK,
-};
-
-/* helpers */
-static struct nf_hook_ops ip_conntrack_helper_out_ops = {
-	.hook		= ip_conntrack_help,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_POST_ROUTING,
-	.priority	= NF_IP_PRI_CONNTRACK_HELPER,
-};
-
-static struct nf_hook_ops ip_conntrack_helper_in_ops = {
-	.hook		= ip_conntrack_help,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_LOCAL_IN,
-	.priority	= NF_IP_PRI_CONNTRACK_HELPER,
-};
-
-/* Refragmenter; last chance. */
-static struct nf_hook_ops ip_conntrack_out_ops = {
-	.hook		= ip_confirm,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_POST_ROUTING,
-	.priority	= NF_IP_PRI_CONNTRACK_CONFIRM,
-};
-
-static struct nf_hook_ops ip_conntrack_local_in_ops = {
-	.hook		= ip_confirm,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_LOCAL_IN,
-	.priority	= NF_IP_PRI_CONNTRACK_CONFIRM,
+static struct nf_hook_ops ip_conntrack_ops[] = {
+	{
+		.hook		= ip_conntrack_defrag,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_PRE_ROUTING,
+		.priority	= NF_IP_PRI_CONNTRACK_DEFRAG,
+	},
+	{
+		.hook		= ip_conntrack_in,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_PRE_ROUTING,
+		.priority	= NF_IP_PRI_CONNTRACK,
+	},
+	{
+		.hook		= ip_conntrack_defrag,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_LOCAL_OUT,
+		.priority	= NF_IP_PRI_CONNTRACK_DEFRAG,
+	},
+	{
+		.hook		= ip_conntrack_local,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_LOCAL_OUT,
+		.priority	= NF_IP_PRI_CONNTRACK,
+	},
+	{
+		.hook		= ip_conntrack_help,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_POST_ROUTING,
+		.priority	= NF_IP_PRI_CONNTRACK_HELPER,
+	},
+	{
+		.hook		= ip_conntrack_help,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_LOCAL_IN,
+		.priority	= NF_IP_PRI_CONNTRACK_HELPER,
+	},
+	{
+		.hook		= ip_confirm,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_POST_ROUTING,
+		.priority	= NF_IP_PRI_CONNTRACK_CONFIRM,
+	},
+	{
+		.hook		= ip_confirm,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_LOCAL_IN,
+		.priority	= NF_IP_PRI_CONNTRACK_CONFIRM,
+	},
 };
 
 /* Sysctl support */
@@ -813,52 +806,17 @@ static int init_or_cleanup(int init)
 	proc_stat->owner = THIS_MODULE;
 #endif
 
-	ret = nf_register_hook(&ip_conntrack_defrag_ops);
+	ret = nf_register_hooks(ip_conntrack_ops, ARRAY_SIZE(ip_conntrack_ops));
 	if (ret < 0) {
-		printk("ip_conntrack: can't register pre-routing defrag hook.\n");
+		printk("ip_conntrack: can't register hooks.\n");
 		goto cleanup_proc_stat;
 	}
-	ret = nf_register_hook(&ip_conntrack_defrag_local_out_ops);
-	if (ret < 0) {
-		printk("ip_conntrack: can't register local_out defrag hook.\n");
-		goto cleanup_defragops;
-	}
-	ret = nf_register_hook(&ip_conntrack_in_ops);
-	if (ret < 0) {
-		printk("ip_conntrack: can't register pre-routing hook.\n");
-		goto cleanup_defraglocalops;
-	}
-	ret = nf_register_hook(&ip_conntrack_local_out_ops);
-	if (ret < 0) {
-		printk("ip_conntrack: can't register local out hook.\n");
-		goto cleanup_inops;
-	}
-	ret = nf_register_hook(&ip_conntrack_helper_in_ops);
-	if (ret < 0) {
-		printk("ip_conntrack: can't register local in helper hook.\n");
-		goto cleanup_inandlocalops;
-	}
-	ret = nf_register_hook(&ip_conntrack_helper_out_ops);
-	if (ret < 0) {
-		printk("ip_conntrack: can't register postrouting helper hook.\n");
-		goto cleanup_helperinops;
-	}
-	ret = nf_register_hook(&ip_conntrack_out_ops);
-	if (ret < 0) {
-		printk("ip_conntrack: can't register post-routing hook.\n");
-		goto cleanup_helperoutops;
-	}
-	ret = nf_register_hook(&ip_conntrack_local_in_ops);
-	if (ret < 0) {
-		printk("ip_conntrack: can't register local in hook.\n");
-		goto cleanup_inoutandlocalops;
-	}
 #ifdef CONFIG_SYSCTL
 	ip_ct_sysctl_header = register_sysctl_table(ip_ct_net_table, 0);
 	if (ip_ct_sysctl_header == NULL) {
 		printk("ip_conntrack: can't register to sysctl.\n");
 		ret = -ENOMEM;
-		goto cleanup_localinops;
+		goto cleanup_hooks;
 	}
 #endif
 
@@ -868,23 +826,9 @@ static int init_or_cleanup(int init)
 	synchronize_net();
 #ifdef CONFIG_SYSCTL
  	unregister_sysctl_table(ip_ct_sysctl_header);
- cleanup_localinops:
+ cleanup_hooks:
 #endif
-	nf_unregister_hook(&ip_conntrack_local_in_ops);
- cleanup_inoutandlocalops:
-	nf_unregister_hook(&ip_conntrack_out_ops);
- cleanup_helperoutops:
-	nf_unregister_hook(&ip_conntrack_helper_out_ops);
- cleanup_helperinops:
-	nf_unregister_hook(&ip_conntrack_helper_in_ops);
- cleanup_inandlocalops:
-	nf_unregister_hook(&ip_conntrack_local_out_ops);
- cleanup_inops:
-	nf_unregister_hook(&ip_conntrack_in_ops);
- cleanup_defraglocalops:
-	nf_unregister_hook(&ip_conntrack_defrag_local_out_ops);
- cleanup_defragops:
-	nf_unregister_hook(&ip_conntrack_defrag_ops);
+	nf_unregister_hooks(ip_conntrack_ops, ARRAY_SIZE(ip_conntrack_ops));
  cleanup_proc_stat:
 #ifdef CONFIG_PROC_FS
 	remove_proc_entry("ip_conntrack", proc_net_stat);
diff --git a/net/ipv4/netfilter/ip_nat_standalone.c b/net/ipv4/netfilter/ip_nat_standalone.c
index 3505b0d..5f02f43 100644
--- a/net/ipv4/netfilter/ip_nat_standalone.c
+++ b/net/ipv4/netfilter/ip_nat_standalone.c
@@ -299,61 +299,57 @@ ip_nat_adjust(unsigned int hooknum,
 
 /* We must be after connection tracking and before packet filtering. */
 
-/* Before packet filtering, change destination */
-static struct nf_hook_ops ip_nat_in_ops = {
-	.hook		= ip_nat_in,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_PRE_ROUTING,
-	.priority	= NF_IP_PRI_NAT_DST,
+static struct nf_hook_ops ip_nat_ops[] = {
+	/* Before packet filtering, change destination */
+	{
+		.hook		= ip_nat_in,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_PRE_ROUTING,
+		.priority	= NF_IP_PRI_NAT_DST,
+	},
+	/* After packet filtering, change source */
+	{
+		.hook		= ip_nat_out,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_POST_ROUTING,
+		.priority	= NF_IP_PRI_NAT_SRC,
+	},
+	/* After conntrack, adjust sequence number */
+	{
+		.hook		= ip_nat_adjust,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_POST_ROUTING,
+		.priority	= NF_IP_PRI_NAT_SEQ_ADJUST,
+	},
+	/* Before packet filtering, change destination */
+	{
+		.hook		= ip_nat_local_fn,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_LOCAL_OUT,
+		.priority	= NF_IP_PRI_NAT_DST,
+	},
+	/* After packet filtering, change source */
+	{
+		.hook		= ip_nat_fn,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_LOCAL_IN,
+		.priority	= NF_IP_PRI_NAT_SRC,
+	},
+	/* After conntrack, adjust sequence number */
+	{
+		.hook		= ip_nat_adjust,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_LOCAL_IN,
+		.priority	= NF_IP_PRI_NAT_SEQ_ADJUST,
+	},
 };
 
-/* After packet filtering, change source */
-static struct nf_hook_ops ip_nat_out_ops = {
-	.hook		= ip_nat_out,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_POST_ROUTING,
-	.priority	= NF_IP_PRI_NAT_SRC,
-};
-
-/* After conntrack, adjust sequence number */
-static struct nf_hook_ops ip_nat_adjust_out_ops = {
-	.hook		= ip_nat_adjust,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_POST_ROUTING,
-	.priority	= NF_IP_PRI_NAT_SEQ_ADJUST,
-};
-
-/* Before packet filtering, change destination */
-static struct nf_hook_ops ip_nat_local_out_ops = {
-	.hook		= ip_nat_local_fn,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_LOCAL_OUT,
-	.priority	= NF_IP_PRI_NAT_DST,
-};
-
-/* After packet filtering, change source for reply packets of LOCAL_OUT DNAT */
-static struct nf_hook_ops ip_nat_local_in_ops = {
-	.hook		= ip_nat_fn,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_LOCAL_IN,
-	.priority	= NF_IP_PRI_NAT_SRC,
-};
-
-/* After conntrack, adjust sequence number */
-static struct nf_hook_ops ip_nat_adjust_in_ops = {
-	.hook		= ip_nat_adjust,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_LOCAL_IN,
-	.priority	= NF_IP_PRI_NAT_SEQ_ADJUST,
-};
-
-
 static int init_or_cleanup(int init)
 {
 	int ret = 0;
@@ -371,50 +367,15 @@ static int init_or_cleanup(int init)
 		printk("ip_nat_init: can't setup rules.\n");
 		goto cleanup_decode_session;
 	}
-	ret = nf_register_hook(&ip_nat_in_ops);
+	ret = nf_register_hooks(ip_nat_ops, ARRAY_SIZE(ip_nat_ops));
 	if (ret < 0) {
-		printk("ip_nat_init: can't register in hook.\n");
+		printk("ip_nat_init: can't register hooks.\n");
 		goto cleanup_rule_init;
 	}
-	ret = nf_register_hook(&ip_nat_out_ops);
-	if (ret < 0) {
-		printk("ip_nat_init: can't register out hook.\n");
-		goto cleanup_inops;
-	}
-	ret = nf_register_hook(&ip_nat_adjust_in_ops);
-	if (ret < 0) {
-		printk("ip_nat_init: can't register adjust in hook.\n");
-		goto cleanup_outops;
-	}
-	ret = nf_register_hook(&ip_nat_adjust_out_ops);
-	if (ret < 0) {
-		printk("ip_nat_init: can't register adjust out hook.\n");
-		goto cleanup_adjustin_ops;
-	}
-	ret = nf_register_hook(&ip_nat_local_out_ops);
-	if (ret < 0) {
-		printk("ip_nat_init: can't register local out hook.\n");
-		goto cleanup_adjustout_ops;
-	}
-	ret = nf_register_hook(&ip_nat_local_in_ops);
-	if (ret < 0) {
-		printk("ip_nat_init: can't register local in hook.\n");
-		goto cleanup_localoutops;
-	}
 	return ret;
 
  cleanup:
-	nf_unregister_hook(&ip_nat_local_in_ops);
- cleanup_localoutops:
-	nf_unregister_hook(&ip_nat_local_out_ops);
- cleanup_adjustout_ops:
-	nf_unregister_hook(&ip_nat_adjust_out_ops);
- cleanup_adjustin_ops:
-	nf_unregister_hook(&ip_nat_adjust_in_ops);
- cleanup_outops:
-	nf_unregister_hook(&ip_nat_out_ops);
- cleanup_inops:
-	nf_unregister_hook(&ip_nat_in_ops);
+	nf_unregister_hooks(ip_nat_ops, ARRAY_SIZE(ip_nat_ops));
  cleanup_rule_init:
 	ip_nat_rule_cleanup();
  cleanup_decode_session:
diff --git a/net/ipv4/netfilter/iptable_filter.c b/net/ipv4/netfilter/iptable_filter.c
index 3d80aef..7f41748 100644
--- a/net/ipv4/netfilter/iptable_filter.c
+++ b/net/ipv4/netfilter/iptable_filter.c
@@ -157,37 +157,20 @@ static int __init iptable_filter_init(vo
 		return ret;
 
 	/* Register hooks */
-	ret = nf_register_hook(&ipt_ops[0]);
+	ret = nf_register_hooks(ipt_ops, ARRAY_SIZE(ipt_ops));
 	if (ret < 0)
 		goto cleanup_table;
 
-	ret = nf_register_hook(&ipt_ops[1]);
-	if (ret < 0)
-		goto cleanup_hook0;
-
-	ret = nf_register_hook(&ipt_ops[2]);
-	if (ret < 0)
-		goto cleanup_hook1;
-
 	return ret;
 
- cleanup_hook1:
-	nf_unregister_hook(&ipt_ops[1]);
- cleanup_hook0:
-	nf_unregister_hook(&ipt_ops[0]);
  cleanup_table:
 	ipt_unregister_table(&packet_filter);
-
 	return ret;
 }
 
 static void __exit iptable_filter_fini(void)
 {
-	unsigned int i;
-
-	for (i = 0; i < sizeof(ipt_ops)/sizeof(struct nf_hook_ops); i++)
-		nf_unregister_hook(&ipt_ops[i]);
-
+	nf_unregister_hooks(ipt_ops, ARRAY_SIZE(ipt_ops));
 	ipt_unregister_table(&packet_filter);
 }
 
diff --git a/net/ipv4/netfilter/iptable_mangle.c b/net/ipv4/netfilter/iptable_mangle.c
index 412fc96..397b95c 100644
--- a/net/ipv4/netfilter/iptable_mangle.c
+++ b/net/ipv4/netfilter/iptable_mangle.c
@@ -211,49 +211,20 @@ static int __init iptable_mangle_init(vo
 		return ret;
 
 	/* Register hooks */
-	ret = nf_register_hook(&ipt_ops[0]);
+	ret = nf_register_hooks(ipt_ops, ARRAY_SIZE(ipt_ops));
 	if (ret < 0)
 		goto cleanup_table;
 
-	ret = nf_register_hook(&ipt_ops[1]);
-	if (ret < 0)
-		goto cleanup_hook0;
-
-	ret = nf_register_hook(&ipt_ops[2]);
-	if (ret < 0)
-		goto cleanup_hook1;
-
-	ret = nf_register_hook(&ipt_ops[3]);
-	if (ret < 0)
-		goto cleanup_hook2;
-
-	ret = nf_register_hook(&ipt_ops[4]);
-	if (ret < 0)
-		goto cleanup_hook3;
-
 	return ret;
 
- cleanup_hook3:
-        nf_unregister_hook(&ipt_ops[3]);
- cleanup_hook2:
-        nf_unregister_hook(&ipt_ops[2]);
- cleanup_hook1:
-	nf_unregister_hook(&ipt_ops[1]);
- cleanup_hook0:
-	nf_unregister_hook(&ipt_ops[0]);
  cleanup_table:
 	ipt_unregister_table(&packet_mangler);
-
 	return ret;
 }
 
 static void __exit iptable_mangle_fini(void)
 {
-	unsigned int i;
-
-	for (i = 0; i < sizeof(ipt_ops)/sizeof(struct nf_hook_ops); i++)
-		nf_unregister_hook(&ipt_ops[i]);
-
+	nf_unregister_hooks(ipt_ops, ARRAY_SIZE(ipt_ops));
 	ipt_unregister_table(&packet_mangler);
 }
 
diff --git a/net/ipv4/netfilter/iptable_raw.c b/net/ipv4/netfilter/iptable_raw.c
index 03cc79a..be43dfb 100644
--- a/net/ipv4/netfilter/iptable_raw.c
+++ b/net/ipv4/netfilter/iptable_raw.c
@@ -101,18 +101,18 @@ ipt_hook(unsigned int hook,
 /* 'raw' is the very first table. */
 static struct nf_hook_ops ipt_ops[] = {
 	{
-	  .hook = ipt_hook, 
-	  .pf = PF_INET, 
-	  .hooknum = NF_IP_PRE_ROUTING, 
-	  .priority = NF_IP_PRI_RAW,
-	  .owner = THIS_MODULE,
+		.hook = ipt_hook,
+		.pf = PF_INET,
+		.hooknum = NF_IP_PRE_ROUTING,
+		.priority = NF_IP_PRI_RAW,
+		.owner = THIS_MODULE,
 	},
 	{
-	  .hook = ipt_hook, 
-	  .pf = PF_INET, 
-	  .hooknum = NF_IP_LOCAL_OUT, 
-	  .priority = NF_IP_PRI_RAW,
-	  .owner = THIS_MODULE,
+		.hook = ipt_hook,
+		.pf = PF_INET,
+		.hooknum = NF_IP_LOCAL_OUT,
+		.priority = NF_IP_PRI_RAW,
+		.owner = THIS_MODULE,
 	},
 };
 
@@ -126,31 +126,20 @@ static int __init iptable_raw_init(void)
 		return ret;
 
 	/* Register hooks */
-	ret = nf_register_hook(&ipt_ops[0]);
+	ret = nf_register_hooks(ipt_ops, ARRAY_SIZE(ipt_ops));
 	if (ret < 0)
 		goto cleanup_table;
 
-	ret = nf_register_hook(&ipt_ops[1]);
-	if (ret < 0)
-		goto cleanup_hook0;
-
 	return ret;
 
- cleanup_hook0:
-	nf_unregister_hook(&ipt_ops[0]);
  cleanup_table:
 	ipt_unregister_table(&packet_raw);
-
 	return ret;
 }
 
 static void __exit iptable_raw_fini(void)
 {
-	unsigned int i;
-
-	for (i = 0; i < sizeof(ipt_ops)/sizeof(struct nf_hook_ops); i++)
-		nf_unregister_hook(&ipt_ops[i]);
-
+	nf_unregister_hooks(ipt_ops, ARRAY_SIZE(ipt_ops));
 	ipt_unregister_table(&packet_raw);
 }
 
diff --git a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
index 4afbc69..3fadacc 100644
--- a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
+++ b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
@@ -210,71 +210,63 @@ static unsigned int ipv4_conntrack_local
 
 /* Connection tracking may drop packets, but never alters them, so
    make it the first hook. */
-static struct nf_hook_ops ipv4_conntrack_defrag_ops = {
-	.hook		= ipv4_conntrack_defrag,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_PRE_ROUTING,
-	.priority	= NF_IP_PRI_CONNTRACK_DEFRAG,
-};
-
-static struct nf_hook_ops ipv4_conntrack_in_ops = {
-	.hook		= ipv4_conntrack_in,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_PRE_ROUTING,
-	.priority	= NF_IP_PRI_CONNTRACK,
-};
-
-static struct nf_hook_ops ipv4_conntrack_defrag_local_out_ops = {
-	.hook           = ipv4_conntrack_defrag,
-	.owner          = THIS_MODULE,
-	.pf             = PF_INET,
-	.hooknum        = NF_IP_LOCAL_OUT,
-	.priority       = NF_IP_PRI_CONNTRACK_DEFRAG,
-};
-
-static struct nf_hook_ops ipv4_conntrack_local_out_ops = {
-	.hook		= ipv4_conntrack_local,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_LOCAL_OUT,
-	.priority	= NF_IP_PRI_CONNTRACK,
-};
-
-/* helpers */
-static struct nf_hook_ops ipv4_conntrack_helper_out_ops = {
-	.hook		= ipv4_conntrack_help,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_POST_ROUTING,
-	.priority	= NF_IP_PRI_CONNTRACK_HELPER,
-};
-
-static struct nf_hook_ops ipv4_conntrack_helper_in_ops = {
-	.hook		= ipv4_conntrack_help,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_LOCAL_IN,
-	.priority	= NF_IP_PRI_CONNTRACK_HELPER,
-};
-
-
-/* Refragmenter; last chance. */
-static struct nf_hook_ops ipv4_conntrack_out_ops = {
-	.hook		= ipv4_confirm,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_POST_ROUTING,
-	.priority	= NF_IP_PRI_CONNTRACK_CONFIRM,
-};
-
-static struct nf_hook_ops ipv4_conntrack_local_in_ops = {
-	.hook		= ipv4_confirm,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET,
-	.hooknum	= NF_IP_LOCAL_IN,
-	.priority	= NF_IP_PRI_CONNTRACK_CONFIRM,
+static struct nf_hook_ops ipv4_conntrack_ops[] = {
+	{
+		.hook		= ipv4_conntrack_defrag,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_PRE_ROUTING,
+		.priority	= NF_IP_PRI_CONNTRACK_DEFRAG,
+	},
+	{
+		.hook		= ipv4_conntrack_in,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_PRE_ROUTING,
+		.priority	= NF_IP_PRI_CONNTRACK,
+	},
+	{
+		.hook           = ipv4_conntrack_defrag,
+		.owner          = THIS_MODULE,
+		.pf             = PF_INET,
+		.hooknum        = NF_IP_LOCAL_OUT,
+		.priority       = NF_IP_PRI_CONNTRACK_DEFRAG,
+	},
+	{
+		.hook		= ipv4_conntrack_local,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_LOCAL_OUT,
+		.priority	= NF_IP_PRI_CONNTRACK,
+	},
+	{
+		.hook		= ipv4_conntrack_help,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_POST_ROUTING,
+		.priority	= NF_IP_PRI_CONNTRACK_HELPER,
+	},
+	{
+		.hook		= ipv4_conntrack_help,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_LOCAL_IN,
+		.priority	= NF_IP_PRI_CONNTRACK_HELPER,
+	},
+	{
+		.hook		= ipv4_confirm,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_POST_ROUTING,
+		.priority	= NF_IP_PRI_CONNTRACK_CONFIRM,
+	},
+	{
+		.hook		= ipv4_confirm,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET,
+		.hooknum	= NF_IP_LOCAL_IN,
+		.priority	= NF_IP_PRI_CONNTRACK_CONFIRM,
+	},
 };
 
 #ifdef CONFIG_SYSCTL
@@ -476,59 +468,18 @@ static int init_or_cleanup(int init)
 		goto cleanup_icmp;
 	}
 
-	ret = nf_register_hook(&ipv4_conntrack_defrag_ops);
+	ret = nf_register_hooks(ipv4_conntrack_ops,
+				ARRAY_SIZE(ipv4_conntrack_ops));
 	if (ret < 0) {
-		printk("nf_conntrack_ipv4: can't register pre-routing defrag hook.\n");
+		printk("nf_conntrack_ipv4: can't register hooks.\n");
 		goto cleanup_ipv4;
 	}
-	ret = nf_register_hook(&ipv4_conntrack_defrag_local_out_ops);
-	if (ret < 0) {
-		printk("nf_conntrack_ipv4: can't register local_out defrag hook.\n");
-		goto cleanup_defragops;
-	}
-
-	ret = nf_register_hook(&ipv4_conntrack_in_ops);
-	if (ret < 0) {
-		printk("nf_conntrack_ipv4: can't register pre-routing hook.\n");
-		goto cleanup_defraglocalops;
-	}
-
-	ret = nf_register_hook(&ipv4_conntrack_local_out_ops);
-	if (ret < 0) {
-		printk("nf_conntrack_ipv4: can't register local out hook.\n");
-		goto cleanup_inops;
-	}
-
-	ret = nf_register_hook(&ipv4_conntrack_helper_in_ops);
-	if (ret < 0) {
-		printk("nf_conntrack_ipv4: can't register local helper hook.\n");
-		goto cleanup_inandlocalops;
-	}
-
-	ret = nf_register_hook(&ipv4_conntrack_helper_out_ops);
-	if (ret < 0) {
-		printk("nf_conntrack_ipv4: can't register postrouting helper hook.\n");
-		goto cleanup_helperinops;
-	}
-
-	ret = nf_register_hook(&ipv4_conntrack_out_ops);
-	if (ret < 0) {
-		printk("nf_conntrack_ipv4: can't register post-routing hook.\n");
-		goto cleanup_helperoutops;
-	}
-
-	ret = nf_register_hook(&ipv4_conntrack_local_in_ops);
-	if (ret < 0) {
-		printk("nf_conntrack_ipv4: can't register local in hook.\n");
-		goto cleanup_inoutandlocalops;
-	}
-
 #ifdef CONFIG_SYSCTL
 	nf_ct_ipv4_sysctl_header = register_sysctl_table(nf_ct_net_table, 0);
 	if (nf_ct_ipv4_sysctl_header == NULL) {
 		printk("nf_conntrack: can't register to sysctl.\n");
 		ret = -ENOMEM;
-		goto cleanup_localinops;
+		goto cleanup_hooks;
 	}
 #endif
 	return ret;
@@ -537,23 +488,9 @@ static int init_or_cleanup(int init)
 	synchronize_net();
 #ifdef CONFIG_SYSCTL
  	unregister_sysctl_table(nf_ct_ipv4_sysctl_header);
- cleanup_localinops:
+ cleanup_hooks:
 #endif
-	nf_unregister_hook(&ipv4_conntrack_local_in_ops);
- cleanup_inoutandlocalops:
-	nf_unregister_hook(&ipv4_conntrack_out_ops);
- cleanup_helperoutops:
-	nf_unregister_hook(&ipv4_conntrack_helper_out_ops);
- cleanup_helperinops:
-	nf_unregister_hook(&ipv4_conntrack_helper_in_ops);
- cleanup_inandlocalops:
-	nf_unregister_hook(&ipv4_conntrack_local_out_ops);
- cleanup_inops:
-	nf_unregister_hook(&ipv4_conntrack_in_ops);
- cleanup_defraglocalops:
-	nf_unregister_hook(&ipv4_conntrack_defrag_local_out_ops);
- cleanup_defragops:
-	nf_unregister_hook(&ipv4_conntrack_defrag_ops);
+	nf_unregister_hooks(ipv4_conntrack_ops, ARRAY_SIZE(ipv4_conntrack_ops));
  cleanup_ipv4:
 	nf_conntrack_l3proto_unregister(&nf_conntrack_l3proto_ipv4);
  cleanup_icmp:
diff --git a/net/ipv6/netfilter/ip6table_filter.c b/net/ipv6/netfilter/ip6table_filter.c
index e5e724d..60976c0 100644
--- a/net/ipv6/netfilter/ip6table_filter.c
+++ b/net/ipv6/netfilter/ip6table_filter.c
@@ -177,37 +177,20 @@ static int __init ip6table_filter_init(v
 		return ret;
 
 	/* Register hooks */
-	ret = nf_register_hook(&ip6t_ops[0]);
+	ret = nf_register_hooks(ip6t_ops, ARRAY_SIZE(ip6t_ops));
 	if (ret < 0)
 		goto cleanup_table;
 
-	ret = nf_register_hook(&ip6t_ops[1]);
-	if (ret < 0)
-		goto cleanup_hook0;
-
-	ret = nf_register_hook(&ip6t_ops[2]);
-	if (ret < 0)
-		goto cleanup_hook1;
-
 	return ret;
 
- cleanup_hook1:
-	nf_unregister_hook(&ip6t_ops[1]);
- cleanup_hook0:
-	nf_unregister_hook(&ip6t_ops[0]);
  cleanup_table:
 	ip6t_unregister_table(&packet_filter);
-
 	return ret;
 }
 
 static void __exit ip6table_filter_fini(void)
 {
-	unsigned int i;
-
-	for (i = 0; i < sizeof(ip6t_ops)/sizeof(struct nf_hook_ops); i++)
-		nf_unregister_hook(&ip6t_ops[i]);
-
+	nf_unregister_hooks(ip6t_ops, ARRAY_SIZE(ip6t_ops));
 	ip6t_unregister_table(&packet_filter);
 }
 
diff --git a/net/ipv6/netfilter/ip6table_mangle.c b/net/ipv6/netfilter/ip6table_mangle.c
index e1f0f6a..03a13ea 100644
--- a/net/ipv6/netfilter/ip6table_mangle.c
+++ b/net/ipv6/netfilter/ip6table_mangle.c
@@ -238,49 +238,20 @@ static int __init ip6table_mangle_init(v
 		return ret;
 
 	/* Register hooks */
-	ret = nf_register_hook(&ip6t_ops[0]);
+	ret = nf_register_hooks(ip6t_ops, ARRAY_SIZE(ip6t_ops));
 	if (ret < 0)
 		goto cleanup_table;
 
-	ret = nf_register_hook(&ip6t_ops[1]);
-	if (ret < 0)
-		goto cleanup_hook0;
-
-	ret = nf_register_hook(&ip6t_ops[2]);
-	if (ret < 0)
-		goto cleanup_hook1;
-
-	ret = nf_register_hook(&ip6t_ops[3]);
-	if (ret < 0)
-		goto cleanup_hook2;
-
-	ret = nf_register_hook(&ip6t_ops[4]);
-	if (ret < 0)
-		goto cleanup_hook3;
-
 	return ret;
 
- cleanup_hook3:
-        nf_unregister_hook(&ip6t_ops[3]);
- cleanup_hook2:
-	nf_unregister_hook(&ip6t_ops[2]);
- cleanup_hook1:
-	nf_unregister_hook(&ip6t_ops[1]);
- cleanup_hook0:
-	nf_unregister_hook(&ip6t_ops[0]);
  cleanup_table:
 	ip6t_unregister_table(&packet_mangler);
-
 	return ret;
 }
 
 static void __exit ip6table_mangle_fini(void)
 {
-	unsigned int i;
-
-	for (i = 0; i < sizeof(ip6t_ops)/sizeof(struct nf_hook_ops); i++)
-		nf_unregister_hook(&ip6t_ops[i]);
-
+	nf_unregister_hooks(ip6t_ops, ARRAY_SIZE(ip6t_ops));
 	ip6t_unregister_table(&packet_mangler);
 }
 
diff --git a/net/ipv6/netfilter/ip6table_raw.c b/net/ipv6/netfilter/ip6table_raw.c
index 54d1fff..61a7c58 100644
--- a/net/ipv6/netfilter/ip6table_raw.c
+++ b/net/ipv6/netfilter/ip6table_raw.c
@@ -152,31 +152,20 @@ static int __init ip6table_raw_init(void
 		return ret;
 
 	/* Register hooks */
-	ret = nf_register_hook(&ip6t_ops[0]);
+	ret = nf_register_hooks(ip6t_ops, ARRAY_SIZE(ip6t_ops));
 	if (ret < 0)
 		goto cleanup_table;
 
-	ret = nf_register_hook(&ip6t_ops[1]);
-	if (ret < 0)
-		goto cleanup_hook0;
-
 	return ret;
 
- cleanup_hook0:
-	nf_unregister_hook(&ip6t_ops[0]);
  cleanup_table:
 	ip6t_unregister_table(&packet_raw);
-
 	return ret;
 }
 
 static void __exit ip6table_raw_fini(void)
 {
-	unsigned int i;
-
-	for (i = 0; i < sizeof(ip6t_ops)/sizeof(struct nf_hook_ops); i++)
-		nf_unregister_hook(&ip6t_ops[i]);
-
+	nf_unregister_hooks(ip6t_ops, ARRAY_SIZE(ip6t_ops));
 	ip6t_unregister_table(&packet_raw);
 }
 
diff --git a/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c b/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
index c8b5a96..0426ed0 100644
--- a/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
+++ b/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
@@ -286,55 +286,49 @@ static unsigned int ipv6_conntrack_local
 	return ipv6_conntrack_in(hooknum, pskb, in, out, okfn);
 }
 
-/* Connection tracking may drop packets, but never alters them, so
-   make it the first hook. */
-static struct nf_hook_ops ipv6_conntrack_defrag_ops = {
-	.hook		= ipv6_defrag,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET6,
-	.hooknum	= NF_IP6_PRE_ROUTING,
-	.priority	= NF_IP6_PRI_CONNTRACK_DEFRAG,
-};
-
-static struct nf_hook_ops ipv6_conntrack_in_ops = {
-	.hook		= ipv6_conntrack_in,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET6,
-	.hooknum	= NF_IP6_PRE_ROUTING,
-	.priority	= NF_IP6_PRI_CONNTRACK,
-};
-
-static struct nf_hook_ops ipv6_conntrack_local_out_ops = {
-	.hook		= ipv6_conntrack_local,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET6,
-	.hooknum	= NF_IP6_LOCAL_OUT,
-	.priority	= NF_IP6_PRI_CONNTRACK,
-};
-
-static struct nf_hook_ops ipv6_conntrack_defrag_local_out_ops = {
-	.hook		= ipv6_defrag,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET6,
-	.hooknum	= NF_IP6_LOCAL_OUT,
-	.priority	= NF_IP6_PRI_CONNTRACK_DEFRAG,
-};
-
-/* Refragmenter; last chance. */
-static struct nf_hook_ops ipv6_conntrack_out_ops = {
-	.hook		= ipv6_confirm,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET6,
-	.hooknum	= NF_IP6_POST_ROUTING,
-	.priority	= NF_IP6_PRI_LAST,
-};
-
-static struct nf_hook_ops ipv6_conntrack_local_in_ops = {
-	.hook		= ipv6_confirm,
-	.owner		= THIS_MODULE,
-	.pf		= PF_INET6,
-	.hooknum	= NF_IP6_LOCAL_IN,
-	.priority	= NF_IP6_PRI_LAST-1,
+static struct nf_hook_ops ipv6_conntrack_ops[] = {
+	{
+		.hook		= ipv6_defrag,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET6,
+		.hooknum	= NF_IP6_PRE_ROUTING,
+		.priority	= NF_IP6_PRI_CONNTRACK_DEFRAG,
+	},
+	{
+		.hook		= ipv6_conntrack_in,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET6,
+		.hooknum	= NF_IP6_PRE_ROUTING,
+		.priority	= NF_IP6_PRI_CONNTRACK,
+	},
+	{
+		.hook		= ipv6_conntrack_local,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET6,
+		.hooknum	= NF_IP6_LOCAL_OUT,
+		.priority	= NF_IP6_PRI_CONNTRACK,
+	},
+	{
+		.hook		= ipv6_defrag,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET6,
+		.hooknum	= NF_IP6_LOCAL_OUT,
+		.priority	= NF_IP6_PRI_CONNTRACK_DEFRAG,
+	},
+	{
+		.hook		= ipv6_confirm,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET6,
+		.hooknum	= NF_IP6_POST_ROUTING,
+		.priority	= NF_IP6_PRI_LAST,
+	},
+	{
+		.hook		= ipv6_confirm,
+		.owner		= THIS_MODULE,
+		.pf		= PF_INET6,
+		.hooknum	= NF_IP6_LOCAL_IN,
+		.priority	= NF_IP6_PRI_LAST-1,
+	},
 };
 
 #ifdef CONFIG_SYSCTL
@@ -505,50 +499,19 @@ static int init_or_cleanup(int init)
 		goto cleanup_icmpv6;
 	}
 
-	ret = nf_register_hook(&ipv6_conntrack_defrag_ops);
+	ret = nf_register_hooks(ipv6_conntrack_ops,
+				ARRAY_SIZE(ipv6_conntrack_ops));
 	if (ret < 0) {
 		printk("nf_conntrack_ipv6: can't register pre-routing defrag "
 		       "hook.\n");
 		goto cleanup_ipv6;
 	}
-
-	ret = nf_register_hook(&ipv6_conntrack_defrag_local_out_ops);
-	if (ret < 0) {
-		printk("nf_conntrack_ipv6: can't register local_out defrag "
-		       "hook.\n");
-		goto cleanup_defragops;
-	}
-
-	ret = nf_register_hook(&ipv6_conntrack_in_ops);
-	if (ret < 0) {
-		printk("nf_conntrack_ipv6: can't register pre-routing hook.\n");
-		goto cleanup_defraglocalops;
-	}
-
-	ret = nf_register_hook(&ipv6_conntrack_local_out_ops);
-	if (ret < 0) {
-		printk("nf_conntrack_ipv6: can't register local out hook.\n");
-		goto cleanup_inops;
-	}
-
-	ret = nf_register_hook(&ipv6_conntrack_out_ops);
-	if (ret < 0) {
-		printk("nf_conntrack_ipv6: can't register post-routing hook.\n");
-		goto cleanup_inandlocalops;
-	}
-
-	ret = nf_register_hook(&ipv6_conntrack_local_in_ops);
-	if (ret < 0) {
-		printk("nf_conntrack_ipv6: can't register local in hook.\n");
-		goto cleanup_inoutandlocalops;
-	}
-
 #ifdef CONFIG_SYSCTL
 	nf_ct_ipv6_sysctl_header = register_sysctl_table(nf_ct_net_table, 0);
 	if (nf_ct_ipv6_sysctl_header == NULL) {
 		printk("nf_conntrack: can't register to sysctl.\n");
 		ret = -ENOMEM;
-		goto cleanup_localinops;
+		goto cleanup_hooks;
 	}
 #endif
 	return ret;
@@ -557,19 +520,9 @@ static int init_or_cleanup(int init)
 	synchronize_net();
 #ifdef CONFIG_SYSCTL
  	unregister_sysctl_table(nf_ct_ipv6_sysctl_header);
- cleanup_localinops:
+ cleanup_hooks:
 #endif
-	nf_unregister_hook(&ipv6_conntrack_local_in_ops);
- cleanup_inoutandlocalops:
-	nf_unregister_hook(&ipv6_conntrack_out_ops);
- cleanup_inandlocalops:
-	nf_unregister_hook(&ipv6_conntrack_local_out_ops);
- cleanup_inops:
-	nf_unregister_hook(&ipv6_conntrack_in_ops);
- cleanup_defraglocalops:
-	nf_unregister_hook(&ipv6_conntrack_defrag_local_out_ops);
- cleanup_defragops:
-	nf_unregister_hook(&ipv6_conntrack_defrag_ops);
+	nf_unregister_hooks(ipv6_conntrack_ops, ARRAY_SIZE(ipv6_conntrack_ops));
  cleanup_ipv6:
 	nf_conntrack_l3proto_unregister(&nf_conntrack_l3proto_ipv6);
  cleanup_icmpv6:

^ permalink raw reply related

* [NETFILTER 03/12]: Fix section mismatch warnings
From: Patrick McHardy @ 2006-04-06 10:04 UTC (permalink / raw)
  To: davem; +Cc: netfilter-devel, Patrick McHardy
In-Reply-To: <20060406100452.17409.37120.sendpatchset@localhost.localdomain>

[NETFILTER]: Fix section mismatch warnings

Fix section mismatch warnings caused by netfilter's init_or_cleanup
functions used in many places by splitting the init from the cleanup
parts.

Signed-off-by: Patrick McHardy <kaber@trash.net>

---
commit 7e7dcfedeec88f2da01af1261c4ecc5a27a9686f
tree 19c9844dce001903774a04a943c61c967a4a9a5f
parent 2f8e62d3a554aee067771c5146a1e29feecd2758
author Patrick McHardy <kaber@trash.net> Thu, 06 Apr 2006 11:35:58 +0200
committer Patrick McHardy <kaber@trash.net> Thu, 06 Apr 2006 11:35:58 +0200

 net/ipv4/netfilter/ip_conntrack_standalone.c   |   90 +++++++++----------
 net/ipv4/netfilter/ip_nat_standalone.c         |   18 +---
 net/ipv4/netfilter/ip_queue.c                  |   31 +++---
 net/ipv4/netfilter/ipt_CLUSTERIP.c             |   40 +++-----
 net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c |   38 ++++----
 net/ipv6/netfilter/ip6_queue.c                 |   31 +++---
 net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c |   38 ++++----
 net/netfilter/nf_conntrack_standalone.c        |  115 ++++++++++++------------
 net/netfilter/nfnetlink_log.c                  |   25 ++---
 net/netfilter/nfnetlink_queue.c                |   27 ++----
 10 files changed, 204 insertions(+), 249 deletions(-)

diff --git a/net/ipv4/netfilter/ip_conntrack_standalone.c b/net/ipv4/netfilter/ip_conntrack_standalone.c
index adc1a0f..f785529 100644
--- a/net/ipv4/netfilter/ip_conntrack_standalone.c
+++ b/net/ipv4/netfilter/ip_conntrack_standalone.c
@@ -776,18 +776,46 @@ static ctl_table ip_ct_net_table[] = {
 EXPORT_SYMBOL(ip_ct_log_invalid);
 #endif /* CONFIG_SYSCTL */
 
-static int init_or_cleanup(int init)
+/* FIXME: Allow NULL functions and sub in pointers to generic for
+   them. --RR */
+int ip_conntrack_protocol_register(struct ip_conntrack_protocol *proto)
+{
+	int ret = 0;
+
+	write_lock_bh(&ip_conntrack_lock);
+	if (ip_ct_protos[proto->proto] != &ip_conntrack_generic_protocol) {
+		ret = -EBUSY;
+		goto out;
+	}
+	ip_ct_protos[proto->proto] = proto;
+ out:
+	write_unlock_bh(&ip_conntrack_lock);
+	return ret;
+}
+
+void ip_conntrack_protocol_unregister(struct ip_conntrack_protocol *proto)
+{
+	write_lock_bh(&ip_conntrack_lock);
+	ip_ct_protos[proto->proto] = &ip_conntrack_generic_protocol;
+	write_unlock_bh(&ip_conntrack_lock);
+	
+	/* Somebody could be still looking at the proto in bh. */
+	synchronize_net();
+
+	/* Remove all contrack entries for this protocol */
+	ip_ct_iterate_cleanup(kill_proto, &proto->proto);
+}
+
+static int __init ip_conntrack_standalone_init(void)
 {
 #ifdef CONFIG_PROC_FS
 	struct proc_dir_entry *proc, *proc_exp, *proc_stat;
 #endif
 	int ret = 0;
 
-	if (!init) goto cleanup;
-
 	ret = ip_conntrack_init();
 	if (ret < 0)
-		goto cleanup_nothing;
+		return ret;
 
 #ifdef CONFIG_PROC_FS
 	ret = -ENOMEM;
@@ -819,16 +847,12 @@ static int init_or_cleanup(int init)
 		goto cleanup_hooks;
 	}
 #endif
-
 	return ret;
 
- cleanup:
-	synchronize_net();
 #ifdef CONFIG_SYSCTL
- 	unregister_sysctl_table(ip_ct_sysctl_header);
  cleanup_hooks:
-#endif
 	nf_unregister_hooks(ip_conntrack_ops, ARRAY_SIZE(ip_conntrack_ops));
+#endif
  cleanup_proc_stat:
 #ifdef CONFIG_PROC_FS
 	remove_proc_entry("ip_conntrack", proc_net_stat);
@@ -839,48 +863,22 @@ static int init_or_cleanup(int init)
  cleanup_init:
 #endif /* CONFIG_PROC_FS */
 	ip_conntrack_cleanup();
- cleanup_nothing:
-	return ret;
-}
-
-/* FIXME: Allow NULL functions and sub in pointers to generic for
-   them. --RR */
-int ip_conntrack_protocol_register(struct ip_conntrack_protocol *proto)
-{
-	int ret = 0;
-
-	write_lock_bh(&ip_conntrack_lock);
-	if (ip_ct_protos[proto->proto] != &ip_conntrack_generic_protocol) {
-		ret = -EBUSY;
-		goto out;
-	}
-	ip_ct_protos[proto->proto] = proto;
- out:
-	write_unlock_bh(&ip_conntrack_lock);
 	return ret;
 }
 
-void ip_conntrack_protocol_unregister(struct ip_conntrack_protocol *proto)
-{
-	write_lock_bh(&ip_conntrack_lock);
-	ip_ct_protos[proto->proto] = &ip_conntrack_generic_protocol;
-	write_unlock_bh(&ip_conntrack_lock);
-	
-	/* Somebody could be still looking at the proto in bh. */
-	synchronize_net();
-
-	/* Remove all contrack entries for this protocol */
-	ip_ct_iterate_cleanup(kill_proto, &proto->proto);
-}
-
-static int __init ip_conntrack_standalone_init(void)
-{
-	return init_or_cleanup(1);
-}
-
 static void __exit ip_conntrack_standalone_fini(void)
 {
-	init_or_cleanup(0);
+	synchronize_net();
+#ifdef CONFIG_SYSCTL
+	unregister_sysctl_table(ip_ct_sysctl_header);
+#endif
+	nf_unregister_hooks(ip_conntrack_ops, ARRAY_SIZE(ip_conntrack_ops));
+#ifdef CONFIG_PROC_FS
+	remove_proc_entry("ip_conntrack", proc_net_stat);
+	proc_net_remove("ip_conntrack_expect");
+	proc_net_remove("ip_conntrack");
+#endif /* CONFIG_PROC_FS */
+	ip_conntrack_cleanup();
 }
 
 module_init(ip_conntrack_standalone_init);
diff --git a/net/ipv4/netfilter/ip_nat_standalone.c b/net/ipv4/netfilter/ip_nat_standalone.c
index 5f02f43..8f760b2 100644
--- a/net/ipv4/netfilter/ip_nat_standalone.c
+++ b/net/ipv4/netfilter/ip_nat_standalone.c
@@ -350,14 +350,12 @@ static struct nf_hook_ops ip_nat_ops[] =
 	},
 };
 
-static int init_or_cleanup(int init)
+static int __init ip_nat_standalone_init(void)
 {
 	int ret = 0;
 
 	need_conntrack();
 
-	if (!init) goto cleanup;
-
 #ifdef CONFIG_XFRM
 	BUG_ON(ip_nat_decode_session != NULL);
 	ip_nat_decode_session = nat_decode_session;
@@ -374,8 +372,6 @@ static int init_or_cleanup(int init)
 	}
 	return ret;
 
- cleanup:
-	nf_unregister_hooks(ip_nat_ops, ARRAY_SIZE(ip_nat_ops));
  cleanup_rule_init:
 	ip_nat_rule_cleanup();
  cleanup_decode_session:
@@ -386,14 +382,14 @@ static int init_or_cleanup(int init)
 	return ret;
 }
 
-static int __init ip_nat_standalone_init(void)
-{
-	return init_or_cleanup(1);
-}
-
 static void __exit ip_nat_standalone_fini(void)
 {
-	init_or_cleanup(0);
+	nf_unregister_hooks(ip_nat_ops, ARRAY_SIZE(ip_nat_ops));
+	ip_nat_rule_cleanup();
+#ifdef CONFIG_XFRM
+	ip_nat_decode_session = NULL;
+	synchronize_net();
+#endif
 }
 
 module_init(ip_nat_standalone_init);
diff --git a/net/ipv4/netfilter/ip_queue.c b/net/ipv4/netfilter/ip_queue.c
index 896a244..4bcc842 100644
--- a/net/ipv4/netfilter/ip_queue.c
+++ b/net/ipv4/netfilter/ip_queue.c
@@ -662,15 +662,11 @@ static struct nf_queue_handler nfqh = {
 	.outfn	= &ipq_enqueue_packet,
 };
 
-static int
-init_or_cleanup(int init)
+static int __init ip_queue_init(void)
 {
 	int status = -ENOMEM;
 	struct proc_dir_entry *proc;
 	
-	if (!init)
-		goto cleanup;
-
 	netlink_register_notifier(&ipq_nl_notifier);
 	ipqnl = netlink_kernel_create(NETLINK_FIREWALL, 0, ipq_rcv_sk,
 				      THIS_MODULE);
@@ -697,11 +693,6 @@ init_or_cleanup(int init)
 	}
 	return status;
 
-cleanup:
-	nf_unregister_queue_handlers(&nfqh);
-	synchronize_net();
-	ipq_flush(NF_DROP);
-	
 cleanup_sysctl:
 	unregister_sysctl_table(ipq_sysctl_header);
 	unregister_netdevice_notifier(&ipq_dev_notifier);
@@ -717,15 +708,21 @@ cleanup_netlink_notifier:
 	return status;
 }
 
-static int __init ip_queue_init(void)
-{
-	
-	return init_or_cleanup(1);
-}
-
 static void __exit ip_queue_fini(void)
 {
-	init_or_cleanup(0);
+	nf_unregister_queue_handlers(&nfqh);
+	synchronize_net();
+	ipq_flush(NF_DROP);
+	
+	unregister_sysctl_table(ipq_sysctl_header);
+	unregister_netdevice_notifier(&ipq_dev_notifier);
+	proc_net_remove(IPQ_PROC_FS_NAME);
+	
+	sock_release(ipqnl->sk_socket);
+	mutex_lock(&ipqnl_mutex);
+	mutex_unlock(&ipqnl_mutex);
+	
+	netlink_unregister_notifier(&ipq_nl_notifier);
 }
 
 MODULE_DESCRIPTION("IPv4 packet queue handler");
diff --git a/net/ipv4/netfilter/ipt_CLUSTERIP.c b/net/ipv4/netfilter/ipt_CLUSTERIP.c
index e4768a3..aad9d28 100644
--- a/net/ipv4/netfilter/ipt_CLUSTERIP.c
+++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c
@@ -725,22 +725,17 @@ static struct file_operations clusterip_
 
 #endif /* CONFIG_PROC_FS */
 
-static int init_or_cleanup(int fini)
+static int __init ipt_clusterip_init(void)
 {
 	int ret;
 
-	if (fini)
-		goto cleanup;
-
-	if (ipt_register_target(&clusterip_tgt)) {
-		ret = -EINVAL;
-		goto cleanup_none;
-	}
+	ret = ipt_register_target(&clusterip_tgt);
+	if (ret < 0)
+		return ret;
 
-	if (nf_register_hook(&cip_arp_ops) < 0) {
-		ret = -EINVAL;
+	ret = nf_register_hook(&cip_arp_ops);
+	if (ret < 0)
 		goto cleanup_target;
-	}
 
 #ifdef CONFIG_PROC_FS
 	clusterip_procdir = proc_mkdir("ipt_CLUSTERIP", proc_net);
@@ -753,31 +748,24 @@ static int init_or_cleanup(int fini)
 
 	printk(KERN_NOTICE "ClusterIP Version %s loaded successfully\n",
 		CLUSTERIP_VERSION);
-
 	return 0;
 
-cleanup:
-	printk(KERN_NOTICE "ClusterIP Version %s unloading\n",
-		CLUSTERIP_VERSION);
-#ifdef CONFIG_PROC_FS
-	remove_proc_entry(clusterip_procdir->name, clusterip_procdir->parent);
-#endif
 cleanup_hook:
 	nf_unregister_hook(&cip_arp_ops);
 cleanup_target:
 	ipt_unregister_target(&clusterip_tgt);
-cleanup_none:
-	return -EINVAL;
-}
-
-static int __init ipt_clusterip_init(void)
-{
-	return init_or_cleanup(0);
+	return ret;
 }
 
 static void __exit ipt_clusterip_fini(void)
 {
-	init_or_cleanup(1);
+	printk(KERN_NOTICE "ClusterIP Version %s unloading\n",
+		CLUSTERIP_VERSION);
+#ifdef CONFIG_PROC_FS
+	remove_proc_entry(clusterip_procdir->name, clusterip_procdir->parent);
+#endif
+	nf_unregister_hook(&cip_arp_ops);
+	ipt_unregister_target(&clusterip_tgt);
 }
 
 module_init(ipt_clusterip_init);
diff --git a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
index 3fadacc..15ebdb6 100644
--- a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
+++ b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
@@ -432,16 +432,20 @@ struct nf_conntrack_l3proto nf_conntrack
 extern struct nf_conntrack_protocol nf_conntrack_protocol_tcp4;
 extern struct nf_conntrack_protocol nf_conntrack_protocol_udp4;
 extern struct nf_conntrack_protocol nf_conntrack_protocol_icmp;
-static int init_or_cleanup(int init)
+
+MODULE_ALIAS("nf_conntrack-" __stringify(AF_INET));
+MODULE_LICENSE("GPL");
+
+static int __init nf_conntrack_l3proto_ipv4_init(void)
 {
 	int ret = 0;
-
-	if (!init) goto cleanup;
+	
+	need_conntrack();
 
 	ret = nf_register_sockopt(&so_getorigdst);
 	if (ret < 0) {
 		printk(KERN_ERR "Unable to register netfilter socket option\n");
-		goto cleanup_nothing;
+		return ret;
 	}
 
 	ret = nf_conntrack_protocol_register(&nf_conntrack_protocol_tcp4);
@@ -484,13 +488,10 @@ static int init_or_cleanup(int init)
 #endif
 	return ret;
 
- cleanup:
-	synchronize_net();
 #ifdef CONFIG_SYSCTL
- 	unregister_sysctl_table(nf_ct_ipv4_sysctl_header);
  cleanup_hooks:
-#endif
 	nf_unregister_hooks(ipv4_conntrack_ops, ARRAY_SIZE(ipv4_conntrack_ops));
+#endif
  cleanup_ipv4:
 	nf_conntrack_l3proto_unregister(&nf_conntrack_l3proto_ipv4);
  cleanup_icmp:
@@ -501,22 +502,21 @@ static int init_or_cleanup(int init)
 	nf_conntrack_protocol_unregister(&nf_conntrack_protocol_tcp4);
  cleanup_sockopt:
 	nf_unregister_sockopt(&so_getorigdst);
- cleanup_nothing:
 	return ret;
 }
 
-MODULE_ALIAS("nf_conntrack-" __stringify(AF_INET));
-MODULE_LICENSE("GPL");
-
-static int __init nf_conntrack_l3proto_ipv4_init(void)
-{
-	need_conntrack();
-	return init_or_cleanup(1);
-}
-
 static void __exit nf_conntrack_l3proto_ipv4_fini(void)
 {
-	init_or_cleanup(0);
+	synchronize_net();
+#ifdef CONFIG_SYSCTL
+ 	unregister_sysctl_table(nf_ct_ipv4_sysctl_header);
+#endif
+	nf_unregister_hooks(ipv4_conntrack_ops, ARRAY_SIZE(ipv4_conntrack_ops));
+	nf_conntrack_l3proto_unregister(&nf_conntrack_l3proto_ipv4);
+	nf_conntrack_protocol_unregister(&nf_conntrack_protocol_icmp);
+	nf_conntrack_protocol_unregister(&nf_conntrack_protocol_udp4);
+	nf_conntrack_protocol_unregister(&nf_conntrack_protocol_tcp4);
+	nf_unregister_sockopt(&so_getorigdst);
 }
 
 module_init(nf_conntrack_l3proto_ipv4_init);
diff --git a/net/ipv6/netfilter/ip6_queue.c b/net/ipv6/netfilter/ip6_queue.c
index e81c6a9..fa23ffe 100644
--- a/net/ipv6/netfilter/ip6_queue.c
+++ b/net/ipv6/netfilter/ip6_queue.c
@@ -658,15 +658,11 @@ static struct nf_queue_handler nfqh = {
 	.outfn	= &ipq_enqueue_packet,
 };
 
-static int
-init_or_cleanup(int init)
+static int __init ip6_queue_init(void)
 {
 	int status = -ENOMEM;
 	struct proc_dir_entry *proc;
 	
-	if (!init)
-		goto cleanup;
-
 	netlink_register_notifier(&ipq_nl_notifier);
 	ipqnl = netlink_kernel_create(NETLINK_IP6_FW, 0, ipq_rcv_sk,
 	                              THIS_MODULE);
@@ -693,11 +689,6 @@ init_or_cleanup(int init)
 	}
 	return status;
 
-cleanup:
-	nf_unregister_queue_handlers(&nfqh);
-	synchronize_net();
-	ipq_flush(NF_DROP);
-	
 cleanup_sysctl:
 	unregister_sysctl_table(ipq_sysctl_header);
 	unregister_netdevice_notifier(&ipq_dev_notifier);
@@ -713,15 +704,21 @@ cleanup_netlink_notifier:
 	return status;
 }
 
-static int __init ip6_queue_init(void)
-{
-	
-	return init_or_cleanup(1);
-}
-
 static void __exit ip6_queue_fini(void)
 {
-	init_or_cleanup(0);
+	nf_unregister_queue_handlers(&nfqh);
+	synchronize_net();
+	ipq_flush(NF_DROP);
+	
+	unregister_sysctl_table(ipq_sysctl_header);
+	unregister_netdevice_notifier(&ipq_dev_notifier);
+	proc_net_remove(IPQ_PROC_FS_NAME);
+	
+	sock_release(ipqnl->sk_socket);
+	mutex_lock(&ipqnl_mutex);
+	mutex_unlock(&ipqnl_mutex);
+	
+	netlink_unregister_notifier(&ipq_nl_notifier);
 }
 
 MODULE_DESCRIPTION("IPv6 packet queue handler");
diff --git a/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c b/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
index 0426ed0..93bae36 100644
--- a/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
+++ b/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
@@ -464,16 +464,21 @@ extern struct nf_conntrack_protocol nf_c
 extern struct nf_conntrack_protocol nf_conntrack_protocol_icmpv6;
 extern int nf_ct_frag6_init(void);
 extern void nf_ct_frag6_cleanup(void);
-static int init_or_cleanup(int init)
+
+MODULE_ALIAS("nf_conntrack-" __stringify(AF_INET6));
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Yasuyuki KOZAKAI @USAGI <yasuyuki.kozakai@toshiba.co.jp>");
+
+static int __init nf_conntrack_l3proto_ipv6_init(void)
 {
 	int ret = 0;
 
-	if (!init) goto cleanup;
+	need_conntrack();
 
 	ret = nf_ct_frag6_init();
 	if (ret < 0) {
 		printk("nf_conntrack_ipv6: can't initialize frag6.\n");
-		goto cleanup_nothing;
+		return ret;
 	}
 	ret = nf_conntrack_protocol_register(&nf_conntrack_protocol_tcp6);
 	if (ret < 0) {
@@ -516,13 +521,10 @@ static int init_or_cleanup(int init)
 #endif
 	return ret;
 
- cleanup:
-	synchronize_net();
 #ifdef CONFIG_SYSCTL
- 	unregister_sysctl_table(nf_ct_ipv6_sysctl_header);
  cleanup_hooks:
-#endif
 	nf_unregister_hooks(ipv6_conntrack_ops, ARRAY_SIZE(ipv6_conntrack_ops));
+#endif
  cleanup_ipv6:
 	nf_conntrack_l3proto_unregister(&nf_conntrack_l3proto_ipv6);
  cleanup_icmpv6:
@@ -533,23 +535,21 @@ static int init_or_cleanup(int init)
 	nf_conntrack_protocol_unregister(&nf_conntrack_protocol_tcp6);
  cleanup_frag6:
 	nf_ct_frag6_cleanup();
- cleanup_nothing:
 	return ret;
 }
 
-MODULE_ALIAS("nf_conntrack-" __stringify(AF_INET6));
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Yasuyuki KOZAKAI @USAGI <yasuyuki.kozakai@toshiba.co.jp>");
-
-static int __init nf_conntrack_l3proto_ipv6_init(void)
-{
-	need_conntrack();
-	return init_or_cleanup(1);
-}
-
 static void __exit nf_conntrack_l3proto_ipv6_fini(void)
 {
-	init_or_cleanup(0);
+	synchronize_net();
+#ifdef CONFIG_SYSCTL
+ 	unregister_sysctl_table(nf_ct_ipv6_sysctl_header);
+#endif
+	nf_unregister_hooks(ipv6_conntrack_ops, ARRAY_SIZE(ipv6_conntrack_ops));
+	nf_conntrack_l3proto_unregister(&nf_conntrack_l3proto_ipv6);
+	nf_conntrack_protocol_unregister(&nf_conntrack_protocol_icmpv6);
+	nf_conntrack_protocol_unregister(&nf_conntrack_protocol_udp6);
+	nf_conntrack_protocol_unregister(&nf_conntrack_protocol_tcp6);
+	nf_ct_frag6_cleanup();
 }
 
 module_init(nf_conntrack_l3proto_ipv6_init);
diff --git a/net/netfilter/nf_conntrack_standalone.c b/net/netfilter/nf_conntrack_standalone.c
index c72aa3c..408960c 100644
--- a/net/netfilter/nf_conntrack_standalone.c
+++ b/net/netfilter/nf_conntrack_standalone.c
@@ -649,63 +649,6 @@ static ctl_table nf_ct_net_table[] = {
 EXPORT_SYMBOL(nf_ct_log_invalid);
 #endif /* CONFIG_SYSCTL */
 
-static int init_or_cleanup(int init)
-{
-#ifdef CONFIG_PROC_FS
-	struct proc_dir_entry *proc, *proc_exp, *proc_stat;
-#endif
-	int ret = 0;
-
-	if (!init) goto cleanup;
-
-	ret = nf_conntrack_init();
-	if (ret < 0)
-		goto cleanup_nothing;
-
-#ifdef CONFIG_PROC_FS
-	proc = proc_net_fops_create("nf_conntrack", 0440, &ct_file_ops);
-	if (!proc) goto cleanup_init;
-
-	proc_exp = proc_net_fops_create("nf_conntrack_expect", 0440,
-					&exp_file_ops);
-	if (!proc_exp) goto cleanup_proc;
-
-	proc_stat = create_proc_entry("nf_conntrack", S_IRUGO, proc_net_stat);
-	if (!proc_stat)
-		goto cleanup_proc_exp;
-
-	proc_stat->proc_fops = &ct_cpu_seq_fops;
-	proc_stat->owner = THIS_MODULE;
-#endif
-#ifdef CONFIG_SYSCTL
-	nf_ct_sysctl_header = register_sysctl_table(nf_ct_net_table, 0);
-	if (nf_ct_sysctl_header == NULL) {
-		printk("nf_conntrack: can't register to sysctl.\n");
-		ret = -ENOMEM;
-		goto cleanup_proc_stat;
-	}
-#endif
-
-	return ret;
-
- cleanup:
-#ifdef CONFIG_SYSCTL
- 	unregister_sysctl_table(nf_ct_sysctl_header);
- cleanup_proc_stat:
-#endif
-#ifdef CONFIG_PROC_FS
-	remove_proc_entry("nf_conntrack", proc_net_stat);
- cleanup_proc_exp:
-	proc_net_remove("nf_conntrack_expect");
- cleanup_proc:
-	proc_net_remove("nf_conntrack");
- cleanup_init:
-#endif /* CNFIG_PROC_FS */
-	nf_conntrack_cleanup();
- cleanup_nothing:
-	return ret;
-}
-
 int nf_conntrack_l3proto_register(struct nf_conntrack_l3proto *proto)
 {
 	int ret = 0;
@@ -808,12 +751,66 @@ void nf_conntrack_protocol_unregister(st
 
 static int __init nf_conntrack_standalone_init(void)
 {
-	return init_or_cleanup(1);
+#ifdef CONFIG_PROC_FS
+	struct proc_dir_entry *proc, *proc_exp, *proc_stat;
+#endif
+	int ret = 0;
+
+	ret = nf_conntrack_init();
+	if (ret < 0)
+		return ret;
+
+#ifdef CONFIG_PROC_FS
+	proc = proc_net_fops_create("nf_conntrack", 0440, &ct_file_ops);
+	if (!proc) goto cleanup_init;
+
+	proc_exp = proc_net_fops_create("nf_conntrack_expect", 0440,
+					&exp_file_ops);
+	if (!proc_exp) goto cleanup_proc;
+
+	proc_stat = create_proc_entry("nf_conntrack", S_IRUGO, proc_net_stat);
+	if (!proc_stat)
+		goto cleanup_proc_exp;
+
+	proc_stat->proc_fops = &ct_cpu_seq_fops;
+	proc_stat->owner = THIS_MODULE;
+#endif
+#ifdef CONFIG_SYSCTL
+	nf_ct_sysctl_header = register_sysctl_table(nf_ct_net_table, 0);
+	if (nf_ct_sysctl_header == NULL) {
+		printk("nf_conntrack: can't register to sysctl.\n");
+		ret = -ENOMEM;
+		goto cleanup_proc_stat;
+	}
+#endif
+	return ret;
+
+#ifdef CONFIG_SYSCTL
+ cleanup_proc_stat:
+#endif
+#ifdef CONFIG_PROC_FS
+	remove_proc_entry("nf_conntrack", proc_net_stat);
+ cleanup_proc_exp:
+	proc_net_remove("nf_conntrack_expect");
+ cleanup_proc:
+	proc_net_remove("nf_conntrack");
+ cleanup_init:
+#endif /* CNFIG_PROC_FS */
+	nf_conntrack_cleanup();
+	return ret;
 }
 
 static void __exit nf_conntrack_standalone_fini(void)
 {
-	init_or_cleanup(0);
+#ifdef CONFIG_SYSCTL
+ 	unregister_sysctl_table(nf_ct_sysctl_header);
+#endif
+#ifdef CONFIG_PROC_FS
+	remove_proc_entry("nf_conntrack", proc_net_stat);
+	proc_net_remove("nf_conntrack_expect");
+	proc_net_remove("nf_conntrack");
+#endif /* CNFIG_PROC_FS */
+	nf_conntrack_cleanup();
 }
 
 module_init(nf_conntrack_standalone_init);
diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c
index 3e3f544..c60273c 100644
--- a/net/netfilter/nfnetlink_log.c
+++ b/net/netfilter/nfnetlink_log.c
@@ -1033,17 +1033,13 @@ static struct file_operations nful_file_
 
 #endif /* PROC_FS */
 
-static int
-init_or_cleanup(int init)
+static int __init nfnetlink_log_init(void)
 {
 	int i, status = -ENOMEM;
 #ifdef CONFIG_PROC_FS
 	struct proc_dir_entry *proc_nful;
 #endif
 	
-	if (!init)
-		goto cleanup;
-
 	for (i = 0; i < INSTANCE_BUCKETS; i++)
 		INIT_HLIST_HEAD(&instance_table[i]);
 	
@@ -1066,30 +1062,25 @@ init_or_cleanup(int init)
 		goto cleanup_subsys;
 	proc_nful->proc_fops = &nful_file_ops;
 #endif
-
 	return status;
 
-cleanup:
-	nf_log_unregister_logger(&nfulnl_logger);
 #ifdef CONFIG_PROC_FS
-	remove_proc_entry("nfnetlink_log", proc_net_netfilter);
 cleanup_subsys:
-#endif
 	nfnetlink_subsys_unregister(&nfulnl_subsys);
+#endif
 cleanup_netlink_notifier:
 	netlink_unregister_notifier(&nfulnl_rtnl_notifier);
 	return status;
 }
 
-static int __init nfnetlink_log_init(void)
-{
-	
-	return init_or_cleanup(1);
-}
-
 static void __exit nfnetlink_log_fini(void)
 {
-	init_or_cleanup(0);
+	nf_log_unregister_logger(&nfulnl_logger);
+#ifdef CONFIG_PROC_FS
+	remove_proc_entry("nfnetlink_log", proc_net_netfilter);
+#endif
+	nfnetlink_subsys_unregister(&nfulnl_subsys);
+	netlink_unregister_notifier(&nfulnl_rtnl_notifier);
 }
 
 MODULE_DESCRIPTION("netfilter userspace logging");
diff --git a/net/netfilter/nfnetlink_queue.c b/net/netfilter/nfnetlink_queue.c
index d0e62f6..b93bcd3 100644
--- a/net/netfilter/nfnetlink_queue.c
+++ b/net/netfilter/nfnetlink_queue.c
@@ -1071,17 +1071,13 @@ static struct file_operations nfqnl_file
 
 #endif /* PROC_FS */
 
-static int
-init_or_cleanup(int init)
+static int __init nfnetlink_queue_init(void)
 {
 	int i, status = -ENOMEM;
 #ifdef CONFIG_PROC_FS
 	struct proc_dir_entry *proc_nfqueue;
 #endif
 	
-	if (!init)
-		goto cleanup;
-
 	for (i = 0; i < INSTANCE_BUCKETS; i++)
 		INIT_HLIST_HEAD(&instance_table[i]);
 
@@ -1101,31 +1097,26 @@ init_or_cleanup(int init)
 #endif
 
 	register_netdevice_notifier(&nfqnl_dev_notifier);
-
 	return status;
 
-cleanup:
-	nf_unregister_queue_handlers(&nfqh);
-	unregister_netdevice_notifier(&nfqnl_dev_notifier);
 #ifdef CONFIG_PROC_FS
-	remove_proc_entry("nfnetlink_queue", proc_net_netfilter);
 cleanup_subsys:
-#endif	
 	nfnetlink_subsys_unregister(&nfqnl_subsys);
+#endif	
 cleanup_netlink_notifier:
 	netlink_unregister_notifier(&nfqnl_rtnl_notifier);
 	return status;
 }
 
-static int __init nfnetlink_queue_init(void)
-{
-	
-	return init_or_cleanup(1);
-}
-
 static void __exit nfnetlink_queue_fini(void)
 {
-	init_or_cleanup(0);
+	nf_unregister_queue_handlers(&nfqh);
+	unregister_netdevice_notifier(&nfqnl_dev_notifier);
+#ifdef CONFIG_PROC_FS
+	remove_proc_entry("nfnetlink_queue", proc_net_netfilter);
+#endif	
+	nfnetlink_subsys_unregister(&nfqnl_subsys);
+	netlink_unregister_notifier(&nfqnl_rtnl_notifier);
 }
 
 MODULE_DESCRIPTION("netfilter packet queue handler");

^ permalink raw reply related

* [NETFILTER 04/12]: H.323 helper: move some function prototypes to ip_conntrack_h323.h
From: Patrick McHardy @ 2006-04-06 10:04 UTC (permalink / raw)
  To: davem; +Cc: netfilter-devel, Patrick McHardy
In-Reply-To: <20060406100452.17409.37120.sendpatchset@localhost.localdomain>

[NETFILTER]: H.323 helper: move some function prototypes to ip_conntrack_h323.h

Move prototypes of NAT callbacks to ip_conntrack_h323.h. Because the use of
typedefs as arguments, some header files need to be moved as well.

Signed-off-by: Jing Min Zhao <zhaojingmin@users.sourceforge.net>
Signed-off-by: Patrick McHardy <kaber@trash.net>

---
commit 02fe897a46c3da14bab9fafeaa99692da6ae7fc1
tree 962f387c169fb4fbb96ab7f78cabfcde4258b810
parent 7e7dcfedeec88f2da01af1261c4ecc5a27a9686f
author Jing Min Zhao <zhaojingmin@users.sourceforge.net> Thu, 06 Apr 2006 11:40:43 +0200
committer Patrick McHardy <kaber@trash.net> Thu, 06 Apr 2006 11:40:43 +0200

 include/linux/netfilter_ipv4/ip_conntrack_h323.h   |   52 +
 .../netfilter_ipv4/ip_conntrack_helper_h323_asn1.h |   98 ++
 .../ip_conntrack_helper_h323_types.h               |  938 +++++++++++++++++++++++
 net/ipv4/netfilter/ip_conntrack_helper_h323.c      |    2 
 net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c |    2 
 net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.h |   98 --
 .../netfilter/ip_conntrack_helper_h323_types.h     |  938 -----------------------
 net/ipv4/netfilter/ip_nat_helper_h323.c            |   53 -
 8 files changed, 1089 insertions(+), 1092 deletions(-)

diff --git a/include/linux/netfilter_ipv4/ip_conntrack_h323.h b/include/linux/netfilter_ipv4/ip_conntrack_h323.h
index 0987cea..eace86b 100644
--- a/include/linux/netfilter_ipv4/ip_conntrack_h323.h
+++ b/include/linux/netfilter_ipv4/ip_conntrack_h323.h
@@ -3,6 +3,8 @@
 
 #ifdef __KERNEL__
 
+#include <linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h>
+
 #define RAS_PORT 1719
 #define Q931_PORT 1720
 #define H323_RTP_CHANNEL_MAX 4	/* Audio, video, FAX and other */
@@ -25,6 +27,56 @@ struct ip_ct_h323_master {
 	};
 };
 
+struct ip_conntrack_expect;
+
+extern int get_h225_addr(unsigned char *data, TransportAddress * addr,
+			 u_int32_t * ip, u_int16_t * port);
+extern void ip_conntrack_h245_expect(struct ip_conntrack *new,
+				     struct ip_conntrack_expect *this);
+extern void ip_conntrack_q931_expect(struct ip_conntrack *new,
+				     struct ip_conntrack_expect *this);
+extern int (*set_h245_addr_hook) (struct sk_buff ** pskb,
+				  unsigned char **data, int dataoff,
+				  H245_TransportAddress * addr,
+				  u_int32_t ip, u_int16_t port);
+extern int (*set_h225_addr_hook) (struct sk_buff ** pskb,
+				  unsigned char **data, int dataoff,
+				  TransportAddress * addr,
+				  u_int32_t ip, u_int16_t port);
+extern int (*set_sig_addr_hook) (struct sk_buff ** pskb,
+				 struct ip_conntrack * ct,
+				 enum ip_conntrack_info ctinfo,
+				 unsigned char **data,
+				 TransportAddress * addr, int count);
+extern int (*set_ras_addr_hook) (struct sk_buff ** pskb,
+				 struct ip_conntrack * ct,
+				 enum ip_conntrack_info ctinfo,
+				 unsigned char **data,
+				 TransportAddress * addr, int count);
+extern int (*nat_rtp_rtcp_hook) (struct sk_buff ** pskb,
+				 struct ip_conntrack * ct,
+				 enum ip_conntrack_info ctinfo,
+				 unsigned char **data, int dataoff,
+				 H245_TransportAddress * addr,
+				 u_int16_t port, u_int16_t rtp_port,
+				 struct ip_conntrack_expect * rtp_exp,
+				 struct ip_conntrack_expect * rtcp_exp);
+extern int (*nat_t120_hook) (struct sk_buff ** pskb, struct ip_conntrack * ct,
+			     enum ip_conntrack_info ctinfo,
+			     unsigned char **data, int dataoff,
+			     H245_TransportAddress * addr, u_int16_t port,
+			     struct ip_conntrack_expect * exp);
+extern int (*nat_h245_hook) (struct sk_buff ** pskb, struct ip_conntrack * ct,
+			     enum ip_conntrack_info ctinfo,
+			     unsigned char **data, int dataoff,
+			     TransportAddress * addr, u_int16_t port,
+			     struct ip_conntrack_expect * exp);
+extern int (*nat_q931_hook) (struct sk_buff ** pskb, struct ip_conntrack * ct,
+			     enum ip_conntrack_info ctinfo,
+			     unsigned char **data, TransportAddress * addr,
+			     int idx, u_int16_t port,
+			     struct ip_conntrack_expect * exp);
+
 #endif
 
 #endif
diff --git a/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h b/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h
new file mode 100644
index 0000000..2556b84
--- /dev/null
+++ b/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h
@@ -0,0 +1,98 @@
+/****************************************************************************
+ * ip_conntrack_helper_h323_asn1.h - BER and PER decoding library for H.323
+ * 			      	     conntrack/NAT module.
+ *
+ * Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@hotmail.com>
+ *
+ * This source code is licensed under General Public License version 2.
+ *
+ *
+ * This library is based on H.225 version 4, H.235 version 2 and H.245
+ * version 7. It is extremely optimized to decode only the absolutely
+ * necessary objects in a signal for Linux kernel NAT module use, so don't
+ * expect it to be a full ASN.1 library.
+ *
+ * Features:
+ *
+ * 1. Small. The total size of code plus data is less than 20 KB (IA32).
+ * 2. Fast. Decoding Netmeeting's Setup signal 1 million times on a PIII 866
+ *    takes only 3.9 seconds.
+ * 3. No memory allocation. It uses a static object. No need to initialize or
+ *    cleanup.
+ * 4. Thread safe.
+ * 5. Support embedded architectures that has no misaligned memory access
+ *    support.
+ *
+ * Limitations:
+ *
+ * 1. At most 30 faststart entries. Actually this is limited by ethernet's MTU.
+ *    If a Setup signal contains more than 30 faststart, the packet size will
+ *    very likely exceed the MTU size, then the TPKT will be fragmented. I
+ *    don't know how to handle this in a Netfilter module. Anybody can help?
+ *    Although I think 30 is enough for most of the cases.
+ * 2. IPv4 addresses only.
+ *
+ ****************************************************************************/
+
+#ifndef _IP_CONNTRACK_HELPER_H323_ASN1_H_
+#define _IP_CONNTRACK_HELPER_H323_ASN1_H_
+
+/*****************************************************************************
+ * H.323 Types
+ ****************************************************************************/
+#include "ip_conntrack_helper_h323_types.h"
+
+typedef struct {
+	enum {
+		Q931_NationalEscape = 0x00,
+		Q931_Alerting = 0x01,
+		Q931_CallProceeding = 0x02,
+		Q931_Connect = 0x07,
+		Q931_ConnectAck = 0x0F,
+		Q931_Progress = 0x03,
+		Q931_Setup = 0x05,
+		Q931_SetupAck = 0x0D,
+		Q931_Resume = 0x26,
+		Q931_ResumeAck = 0x2E,
+		Q931_ResumeReject = 0x22,
+		Q931_Suspend = 0x25,
+		Q931_SuspendAck = 0x2D,
+		Q931_SuspendReject = 0x21,
+		Q931_UserInformation = 0x20,
+		Q931_Disconnect = 0x45,
+		Q931_Release = 0x4D,
+		Q931_ReleaseComplete = 0x5A,
+		Q931_Restart = 0x46,
+		Q931_RestartAck = 0x4E,
+		Q931_Segment = 0x60,
+		Q931_CongestionCtrl = 0x79,
+		Q931_Information = 0x7B,
+		Q931_Notify = 0x6E,
+		Q931_Status = 0x7D,
+		Q931_StatusEnquiry = 0x75,
+		Q931_Facility = 0x62
+	} MessageType;
+	H323_UserInformation UUIE;
+} Q931;
+
+/*****************************************************************************
+ * Decode Functions Return Codes
+ ****************************************************************************/
+
+#define H323_ERROR_NONE 0	/* Decoded successfully */
+#define H323_ERROR_STOP 1	/* Decoding stopped, not really an error */
+#define H323_ERROR_BOUND -1
+#define H323_ERROR_RANGE -2
+
+
+/*****************************************************************************
+ * Decode Functions
+ ****************************************************************************/
+
+int DecodeRasMessage(unsigned char *buf, size_t sz, RasMessage * ras);
+int DecodeQ931(unsigned char *buf, size_t sz, Q931 * q931);
+int DecodeMultimediaSystemControlMessage(unsigned char *buf, size_t sz,
+					 MultimediaSystemControlMessage *
+					 mscm);
+
+#endif
diff --git a/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_types.h b/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_types.h
new file mode 100644
index 0000000..cc98f7a
--- /dev/null
+++ b/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_types.h
@@ -0,0 +1,938 @@
+/* Generated by Jing Min Zhao's ASN.1 parser, Mar 15 2006
+ *
+ * Copyright (c) 2006 Jing Min Zhao <zhaojingmin@users.sourceforge.net>
+ *
+ * This source code is licensed under General Public License version 2.
+ */
+
+typedef struct TransportAddress_ipAddress {	/* SEQUENCE */
+	int options;		/* No use */
+	unsigned ip;
+} TransportAddress_ipAddress;
+
+typedef struct TransportAddress {	/* CHOICE */
+	enum {
+		eTransportAddress_ipAddress,
+		eTransportAddress_ipSourceRoute,
+		eTransportAddress_ipxAddress,
+		eTransportAddress_ip6Address,
+		eTransportAddress_netBios,
+		eTransportAddress_nsap,
+		eTransportAddress_nonStandardAddress,
+	} choice;
+	union {
+		TransportAddress_ipAddress ipAddress;
+	};
+} TransportAddress;
+
+typedef struct DataProtocolCapability {	/* CHOICE */
+	enum {
+		eDataProtocolCapability_nonStandard,
+		eDataProtocolCapability_v14buffered,
+		eDataProtocolCapability_v42lapm,
+		eDataProtocolCapability_hdlcFrameTunnelling,
+		eDataProtocolCapability_h310SeparateVCStack,
+		eDataProtocolCapability_h310SingleVCStack,
+		eDataProtocolCapability_transparent,
+		eDataProtocolCapability_segmentationAndReassembly,
+		eDataProtocolCapability_hdlcFrameTunnelingwSAR,
+		eDataProtocolCapability_v120,
+		eDataProtocolCapability_separateLANStack,
+		eDataProtocolCapability_v76wCompression,
+		eDataProtocolCapability_tcp,
+		eDataProtocolCapability_udp,
+	} choice;
+} DataProtocolCapability;
+
+typedef struct DataApplicationCapability_application {	/* CHOICE */
+	enum {
+		eDataApplicationCapability_application_nonStandard,
+		eDataApplicationCapability_application_t120,
+		eDataApplicationCapability_application_dsm_cc,
+		eDataApplicationCapability_application_userData,
+		eDataApplicationCapability_application_t84,
+		eDataApplicationCapability_application_t434,
+		eDataApplicationCapability_application_h224,
+		eDataApplicationCapability_application_nlpid,
+		eDataApplicationCapability_application_dsvdControl,
+		eDataApplicationCapability_application_h222DataPartitioning,
+		eDataApplicationCapability_application_t30fax,
+		eDataApplicationCapability_application_t140,
+		eDataApplicationCapability_application_t38fax,
+		eDataApplicationCapability_application_genericDataCapability,
+	} choice;
+	union {
+		DataProtocolCapability t120;
+	};
+} DataApplicationCapability_application;
+
+typedef struct DataApplicationCapability {	/* SEQUENCE */
+	int options;		/* No use */
+	DataApplicationCapability_application application;
+} DataApplicationCapability;
+
+typedef struct DataType {	/* CHOICE */
+	enum {
+		eDataType_nonStandard,
+		eDataType_nullData,
+		eDataType_videoData,
+		eDataType_audioData,
+		eDataType_data,
+		eDataType_encryptionData,
+		eDataType_h235Control,
+		eDataType_h235Media,
+		eDataType_multiplexedStream,
+	} choice;
+	union {
+		DataApplicationCapability data;
+	};
+} DataType;
+
+typedef struct UnicastAddress_iPAddress {	/* SEQUENCE */
+	int options;		/* No use */
+	unsigned network;
+} UnicastAddress_iPAddress;
+
+typedef struct UnicastAddress {	/* CHOICE */
+	enum {
+		eUnicastAddress_iPAddress,
+		eUnicastAddress_iPXAddress,
+		eUnicastAddress_iP6Address,
+		eUnicastAddress_netBios,
+		eUnicastAddress_iPSourceRouteAddress,
+		eUnicastAddress_nsap,
+		eUnicastAddress_nonStandardAddress,
+	} choice;
+	union {
+		UnicastAddress_iPAddress iPAddress;
+	};
+} UnicastAddress;
+
+typedef struct H245_TransportAddress {	/* CHOICE */
+	enum {
+		eH245_TransportAddress_unicastAddress,
+		eH245_TransportAddress_multicastAddress,
+	} choice;
+	union {
+		UnicastAddress unicastAddress;
+	};
+} H245_TransportAddress;
+
+typedef struct H2250LogicalChannelParameters {	/* SEQUENCE */
+	enum {
+		eH2250LogicalChannelParameters_nonStandard = (1 << 31),
+		eH2250LogicalChannelParameters_associatedSessionID =
+		    (1 << 30),
+		eH2250LogicalChannelParameters_mediaChannel = (1 << 29),
+		eH2250LogicalChannelParameters_mediaGuaranteedDelivery =
+		    (1 << 28),
+		eH2250LogicalChannelParameters_mediaControlChannel =
+		    (1 << 27),
+		eH2250LogicalChannelParameters_mediaControlGuaranteedDelivery
+		    = (1 << 26),
+		eH2250LogicalChannelParameters_silenceSuppression = (1 << 25),
+		eH2250LogicalChannelParameters_destination = (1 << 24),
+		eH2250LogicalChannelParameters_dynamicRTPPayloadType =
+		    (1 << 23),
+		eH2250LogicalChannelParameters_mediaPacketization = (1 << 22),
+		eH2250LogicalChannelParameters_transportCapability =
+		    (1 << 21),
+		eH2250LogicalChannelParameters_redundancyEncoding = (1 << 20),
+		eH2250LogicalChannelParameters_source = (1 << 19),
+	} options;
+	H245_TransportAddress mediaChannel;
+	H245_TransportAddress mediaControlChannel;
+} H2250LogicalChannelParameters;
+
+typedef struct OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters {	/* CHOICE */
+	enum {
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h222LogicalChannelParameters,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h223LogicalChannelParameters,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_v76LogicalChannelParameters,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_none,
+	} choice;
+	union {
+		H2250LogicalChannelParameters h2250LogicalChannelParameters;
+	};
+} OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters;
+
+typedef struct OpenLogicalChannel_forwardLogicalChannelParameters {	/* SEQUENCE */
+	enum {
+		eOpenLogicalChannel_forwardLogicalChannelParameters_portNumber
+		    = (1 << 31),
+		eOpenLogicalChannel_forwardLogicalChannelParameters_forwardLogicalChannelDependency
+		    = (1 << 30),
+		eOpenLogicalChannel_forwardLogicalChannelParameters_replacementFor
+		    = (1 << 29),
+	} options;
+	DataType dataType;
+	OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters
+	    multiplexParameters;
+} OpenLogicalChannel_forwardLogicalChannelParameters;
+
+typedef struct OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters {	/* CHOICE */
+	enum {
+		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_h223LogicalChannelParameters,
+		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_v76LogicalChannelParameters,
+		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters,
+	} choice;
+	union {
+		H2250LogicalChannelParameters h2250LogicalChannelParameters;
+	};
+} OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters;
+
+typedef struct OpenLogicalChannel_reverseLogicalChannelParameters {	/* SEQUENCE */
+	enum {
+		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters
+		    = (1 << 31),
+		eOpenLogicalChannel_reverseLogicalChannelParameters_reverseLogicalChannelDependency
+		    = (1 << 30),
+		eOpenLogicalChannel_reverseLogicalChannelParameters_replacementFor
+		    = (1 << 29),
+	} options;
+	OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters
+	    multiplexParameters;
+} OpenLogicalChannel_reverseLogicalChannelParameters;
+
+typedef struct NetworkAccessParameters_networkAddress {	/* CHOICE */
+	enum {
+		eNetworkAccessParameters_networkAddress_q2931Address,
+		eNetworkAccessParameters_networkAddress_e164Address,
+		eNetworkAccessParameters_networkAddress_localAreaAddress,
+	} choice;
+	union {
+		H245_TransportAddress localAreaAddress;
+	};
+} NetworkAccessParameters_networkAddress;
+
+typedef struct NetworkAccessParameters {	/* SEQUENCE */
+	enum {
+		eNetworkAccessParameters_distribution = (1 << 31),
+		eNetworkAccessParameters_externalReference = (1 << 30),
+		eNetworkAccessParameters_t120SetupProcedure = (1 << 29),
+	} options;
+	NetworkAccessParameters_networkAddress networkAddress;
+} NetworkAccessParameters;
+
+typedef struct OpenLogicalChannel {	/* SEQUENCE */
+	enum {
+		eOpenLogicalChannel_reverseLogicalChannelParameters =
+		    (1 << 31),
+		eOpenLogicalChannel_separateStack = (1 << 30),
+		eOpenLogicalChannel_encryptionSync = (1 << 29),
+	} options;
+	OpenLogicalChannel_forwardLogicalChannelParameters
+	    forwardLogicalChannelParameters;
+	OpenLogicalChannel_reverseLogicalChannelParameters
+	    reverseLogicalChannelParameters;
+	NetworkAccessParameters separateStack;
+} OpenLogicalChannel;
+
+typedef struct Setup_UUIE_fastStart {	/* SEQUENCE OF */
+	int count;
+	OpenLogicalChannel item[30];
+} Setup_UUIE_fastStart;
+
+typedef struct Setup_UUIE {	/* SEQUENCE */
+	enum {
+		eSetup_UUIE_h245Address = (1 << 31),
+		eSetup_UUIE_sourceAddress = (1 << 30),
+		eSetup_UUIE_destinationAddress = (1 << 29),
+		eSetup_UUIE_destCallSignalAddress = (1 << 28),
+		eSetup_UUIE_destExtraCallInfo = (1 << 27),
+		eSetup_UUIE_destExtraCRV = (1 << 26),
+		eSetup_UUIE_callServices = (1 << 25),
+		eSetup_UUIE_sourceCallSignalAddress = (1 << 24),
+		eSetup_UUIE_remoteExtensionAddress = (1 << 23),
+		eSetup_UUIE_callIdentifier = (1 << 22),
+		eSetup_UUIE_h245SecurityCapability = (1 << 21),
+		eSetup_UUIE_tokens = (1 << 20),
+		eSetup_UUIE_cryptoTokens = (1 << 19),
+		eSetup_UUIE_fastStart = (1 << 18),
+		eSetup_UUIE_mediaWaitForConnect = (1 << 17),
+		eSetup_UUIE_canOverlapSend = (1 << 16),
+		eSetup_UUIE_endpointIdentifier = (1 << 15),
+		eSetup_UUIE_multipleCalls = (1 << 14),
+		eSetup_UUIE_maintainConnection = (1 << 13),
+		eSetup_UUIE_connectionParameters = (1 << 12),
+		eSetup_UUIE_language = (1 << 11),
+		eSetup_UUIE_presentationIndicator = (1 << 10),
+		eSetup_UUIE_screeningIndicator = (1 << 9),
+		eSetup_UUIE_serviceControl = (1 << 8),
+		eSetup_UUIE_symmetricOperationRequired = (1 << 7),
+		eSetup_UUIE_capacity = (1 << 6),
+		eSetup_UUIE_circuitInfo = (1 << 5),
+		eSetup_UUIE_desiredProtocols = (1 << 4),
+		eSetup_UUIE_neededFeatures = (1 << 3),
+		eSetup_UUIE_desiredFeatures = (1 << 2),
+		eSetup_UUIE_supportedFeatures = (1 << 1),
+		eSetup_UUIE_parallelH245Control = (1 << 0),
+	} options;
+	TransportAddress h245Address;
+	TransportAddress destCallSignalAddress;
+	TransportAddress sourceCallSignalAddress;
+	Setup_UUIE_fastStart fastStart;
+} Setup_UUIE;
+
+typedef struct CallProceeding_UUIE_fastStart {	/* SEQUENCE OF */
+	int count;
+	OpenLogicalChannel item[30];
+} CallProceeding_UUIE_fastStart;
+
+typedef struct CallProceeding_UUIE {	/* SEQUENCE */
+	enum {
+		eCallProceeding_UUIE_h245Address = (1 << 31),
+		eCallProceeding_UUIE_callIdentifier = (1 << 30),
+		eCallProceeding_UUIE_h245SecurityMode = (1 << 29),
+		eCallProceeding_UUIE_tokens = (1 << 28),
+		eCallProceeding_UUIE_cryptoTokens = (1 << 27),
+		eCallProceeding_UUIE_fastStart = (1 << 26),
+		eCallProceeding_UUIE_multipleCalls = (1 << 25),
+		eCallProceeding_UUIE_maintainConnection = (1 << 24),
+		eCallProceeding_UUIE_fastConnectRefused = (1 << 23),
+		eCallProceeding_UUIE_featureSet = (1 << 22),
+	} options;
+	TransportAddress h245Address;
+	CallProceeding_UUIE_fastStart fastStart;
+} CallProceeding_UUIE;
+
+typedef struct Connect_UUIE_fastStart {	/* SEQUENCE OF */
+	int count;
+	OpenLogicalChannel item[30];
+} Connect_UUIE_fastStart;
+
+typedef struct Connect_UUIE {	/* SEQUENCE */
+	enum {
+		eConnect_UUIE_h245Address = (1 << 31),
+		eConnect_UUIE_callIdentifier = (1 << 30),
+		eConnect_UUIE_h245SecurityMode = (1 << 29),
+		eConnect_UUIE_tokens = (1 << 28),
+		eConnect_UUIE_cryptoTokens = (1 << 27),
+		eConnect_UUIE_fastStart = (1 << 26),
+		eConnect_UUIE_multipleCalls = (1 << 25),
+		eConnect_UUIE_maintainConnection = (1 << 24),
+		eConnect_UUIE_language = (1 << 23),
+		eConnect_UUIE_connectedAddress = (1 << 22),
+		eConnect_UUIE_presentationIndicator = (1 << 21),
+		eConnect_UUIE_screeningIndicator = (1 << 20),
+		eConnect_UUIE_fastConnectRefused = (1 << 19),
+		eConnect_UUIE_serviceControl = (1 << 18),
+		eConnect_UUIE_capacity = (1 << 17),
+		eConnect_UUIE_featureSet = (1 << 16),
+	} options;
+	TransportAddress h245Address;
+	Connect_UUIE_fastStart fastStart;
+} Connect_UUIE;
+
+typedef struct Alerting_UUIE_fastStart {	/* SEQUENCE OF */
+	int count;
+	OpenLogicalChannel item[30];
+} Alerting_UUIE_fastStart;
+
+typedef struct Alerting_UUIE {	/* SEQUENCE */
+	enum {
+		eAlerting_UUIE_h245Address = (1 << 31),
+		eAlerting_UUIE_callIdentifier = (1 << 30),
+		eAlerting_UUIE_h245SecurityMode = (1 << 29),
+		eAlerting_UUIE_tokens = (1 << 28),
+		eAlerting_UUIE_cryptoTokens = (1 << 27),
+		eAlerting_UUIE_fastStart = (1 << 26),
+		eAlerting_UUIE_multipleCalls = (1 << 25),
+		eAlerting_UUIE_maintainConnection = (1 << 24),
+		eAlerting_UUIE_alertingAddress = (1 << 23),
+		eAlerting_UUIE_presentationIndicator = (1 << 22),
+		eAlerting_UUIE_screeningIndicator = (1 << 21),
+		eAlerting_UUIE_fastConnectRefused = (1 << 20),
+		eAlerting_UUIE_serviceControl = (1 << 19),
+		eAlerting_UUIE_capacity = (1 << 18),
+		eAlerting_UUIE_featureSet = (1 << 17),
+	} options;
+	TransportAddress h245Address;
+	Alerting_UUIE_fastStart fastStart;
+} Alerting_UUIE;
+
+typedef struct Information_UUIE_fastStart {	/* SEQUENCE OF */
+	int count;
+	OpenLogicalChannel item[30];
+} Information_UUIE_fastStart;
+
+typedef struct Information_UUIE {	/* SEQUENCE */
+	enum {
+		eInformation_UUIE_callIdentifier = (1 << 31),
+		eInformation_UUIE_tokens = (1 << 30),
+		eInformation_UUIE_cryptoTokens = (1 << 29),
+		eInformation_UUIE_fastStart = (1 << 28),
+		eInformation_UUIE_fastConnectRefused = (1 << 27),
+		eInformation_UUIE_circuitInfo = (1 << 26),
+	} options;
+	Information_UUIE_fastStart fastStart;
+} Information_UUIE;
+
+typedef struct FacilityReason {	/* CHOICE */
+	enum {
+		eFacilityReason_routeCallToGatekeeper,
+		eFacilityReason_callForwarded,
+		eFacilityReason_routeCallToMC,
+		eFacilityReason_undefinedReason,
+		eFacilityReason_conferenceListChoice,
+		eFacilityReason_startH245,
+		eFacilityReason_noH245,
+		eFacilityReason_newTokens,
+		eFacilityReason_featureSetUpdate,
+		eFacilityReason_forwardedElements,
+		eFacilityReason_transportedInformation,
+	} choice;
+} FacilityReason;
+
+typedef struct Facility_UUIE_fastStart {	/* SEQUENCE OF */
+	int count;
+	OpenLogicalChannel item[30];
+} Facility_UUIE_fastStart;
+
+typedef struct Facility_UUIE {	/* SEQUENCE */
+	enum {
+		eFacility_UUIE_alternativeAddress = (1 << 31),
+		eFacility_UUIE_alternativeAliasAddress = (1 << 30),
+		eFacility_UUIE_conferenceID = (1 << 29),
+		eFacility_UUIE_callIdentifier = (1 << 28),
+		eFacility_UUIE_destExtraCallInfo = (1 << 27),
+		eFacility_UUIE_remoteExtensionAddress = (1 << 26),
+		eFacility_UUIE_tokens = (1 << 25),
+		eFacility_UUIE_cryptoTokens = (1 << 24),
+		eFacility_UUIE_conferences = (1 << 23),
+		eFacility_UUIE_h245Address = (1 << 22),
+		eFacility_UUIE_fastStart = (1 << 21),
+		eFacility_UUIE_multipleCalls = (1 << 20),
+		eFacility_UUIE_maintainConnection = (1 << 19),
+		eFacility_UUIE_fastConnectRefused = (1 << 18),
+		eFacility_UUIE_serviceControl = (1 << 17),
+		eFacility_UUIE_circuitInfo = (1 << 16),
+		eFacility_UUIE_featureSet = (1 << 15),
+		eFacility_UUIE_destinationInfo = (1 << 14),
+		eFacility_UUIE_h245SecurityMode = (1 << 13),
+	} options;
+	FacilityReason reason;
+	TransportAddress h245Address;
+	Facility_UUIE_fastStart fastStart;
+} Facility_UUIE;
+
+typedef struct Progress_UUIE_fastStart {	/* SEQUENCE OF */
+	int count;
+	OpenLogicalChannel item[30];
+} Progress_UUIE_fastStart;
+
+typedef struct Progress_UUIE {	/* SEQUENCE */
+	enum {
+		eProgress_UUIE_h245Address = (1 << 31),
+		eProgress_UUIE_h245SecurityMode = (1 << 30),
+		eProgress_UUIE_tokens = (1 << 29),
+		eProgress_UUIE_cryptoTokens = (1 << 28),
+		eProgress_UUIE_fastStart = (1 << 27),
+		eProgress_UUIE_multipleCalls = (1 << 26),
+		eProgress_UUIE_maintainConnection = (1 << 25),
+		eProgress_UUIE_fastConnectRefused = (1 << 24),
+	} options;
+	TransportAddress h245Address;
+	Progress_UUIE_fastStart fastStart;
+} Progress_UUIE;
+
+typedef struct H323_UU_PDU_h323_message_body {	/* CHOICE */
+	enum {
+		eH323_UU_PDU_h323_message_body_setup,
+		eH323_UU_PDU_h323_message_body_callProceeding,
+		eH323_UU_PDU_h323_message_body_connect,
+		eH323_UU_PDU_h323_message_body_alerting,
+		eH323_UU_PDU_h323_message_body_information,
+		eH323_UU_PDU_h323_message_body_releaseComplete,
+		eH323_UU_PDU_h323_message_body_facility,
+		eH323_UU_PDU_h323_message_body_progress,
+		eH323_UU_PDU_h323_message_body_empty,
+		eH323_UU_PDU_h323_message_body_status,
+		eH323_UU_PDU_h323_message_body_statusInquiry,
+		eH323_UU_PDU_h323_message_body_setupAcknowledge,
+		eH323_UU_PDU_h323_message_body_notify,
+	} choice;
+	union {
+		Setup_UUIE setup;
+		CallProceeding_UUIE callProceeding;
+		Connect_UUIE connect;
+		Alerting_UUIE alerting;
+		Information_UUIE information;
+		Facility_UUIE facility;
+		Progress_UUIE progress;
+	};
+} H323_UU_PDU_h323_message_body;
+
+typedef struct RequestMessage {	/* CHOICE */
+	enum {
+		eRequestMessage_nonStandard,
+		eRequestMessage_masterSlaveDetermination,
+		eRequestMessage_terminalCapabilitySet,
+		eRequestMessage_openLogicalChannel,
+		eRequestMessage_closeLogicalChannel,
+		eRequestMessage_requestChannelClose,
+		eRequestMessage_multiplexEntrySend,
+		eRequestMessage_requestMultiplexEntry,
+		eRequestMessage_requestMode,
+		eRequestMessage_roundTripDelayRequest,
+		eRequestMessage_maintenanceLoopRequest,
+		eRequestMessage_communicationModeRequest,
+		eRequestMessage_conferenceRequest,
+		eRequestMessage_multilinkRequest,
+		eRequestMessage_logicalChannelRateRequest,
+	} choice;
+	union {
+		OpenLogicalChannel openLogicalChannel;
+	};
+} RequestMessage;
+
+typedef struct OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters {	/* CHOICE */
+	enum {
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters_h222LogicalChannelParameters,
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters,
+	} choice;
+	union {
+		H2250LogicalChannelParameters h2250LogicalChannelParameters;
+	};
+} OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters;
+
+typedef struct OpenLogicalChannelAck_reverseLogicalChannelParameters {	/* SEQUENCE */
+	enum {
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_portNumber
+		    = (1 << 31),
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters
+		    = (1 << 30),
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_replacementFor
+		    = (1 << 29),
+	} options;
+	OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters
+	    multiplexParameters;
+} OpenLogicalChannelAck_reverseLogicalChannelParameters;
+
+typedef struct H2250LogicalChannelAckParameters {	/* SEQUENCE */
+	enum {
+		eH2250LogicalChannelAckParameters_nonStandard = (1 << 31),
+		eH2250LogicalChannelAckParameters_sessionID = (1 << 30),
+		eH2250LogicalChannelAckParameters_mediaChannel = (1 << 29),
+		eH2250LogicalChannelAckParameters_mediaControlChannel =
+		    (1 << 28),
+		eH2250LogicalChannelAckParameters_dynamicRTPPayloadType =
+		    (1 << 27),
+		eH2250LogicalChannelAckParameters_flowControlToZero =
+		    (1 << 26),
+		eH2250LogicalChannelAckParameters_portNumber = (1 << 25),
+	} options;
+	H245_TransportAddress mediaChannel;
+	H245_TransportAddress mediaControlChannel;
+} H2250LogicalChannelAckParameters;
+
+typedef struct OpenLogicalChannelAck_forwardMultiplexAckParameters {	/* CHOICE */
+	enum {
+		eOpenLogicalChannelAck_forwardMultiplexAckParameters_h2250LogicalChannelAckParameters,
+	} choice;
+	union {
+		H2250LogicalChannelAckParameters
+		    h2250LogicalChannelAckParameters;
+	};
+} OpenLogicalChannelAck_forwardMultiplexAckParameters;
+
+typedef struct OpenLogicalChannelAck {	/* SEQUENCE */
+	enum {
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters =
+		    (1 << 31),
+		eOpenLogicalChannelAck_separateStack = (1 << 30),
+		eOpenLogicalChannelAck_forwardMultiplexAckParameters =
+		    (1 << 29),
+		eOpenLogicalChannelAck_encryptionSync = (1 << 28),
+	} options;
+	OpenLogicalChannelAck_reverseLogicalChannelParameters
+	    reverseLogicalChannelParameters;
+	OpenLogicalChannelAck_forwardMultiplexAckParameters
+	    forwardMultiplexAckParameters;
+} OpenLogicalChannelAck;
+
+typedef struct ResponseMessage {	/* CHOICE */
+	enum {
+		eResponseMessage_nonStandard,
+		eResponseMessage_masterSlaveDeterminationAck,
+		eResponseMessage_masterSlaveDeterminationReject,
+		eResponseMessage_terminalCapabilitySetAck,
+		eResponseMessage_terminalCapabilitySetReject,
+		eResponseMessage_openLogicalChannelAck,
+		eResponseMessage_openLogicalChannelReject,
+		eResponseMessage_closeLogicalChannelAck,
+		eResponseMessage_requestChannelCloseAck,
+		eResponseMessage_requestChannelCloseReject,
+		eResponseMessage_multiplexEntrySendAck,
+		eResponseMessage_multiplexEntrySendReject,
+		eResponseMessage_requestMultiplexEntryAck,
+		eResponseMessage_requestMultiplexEntryReject,
+		eResponseMessage_requestModeAck,
+		eResponseMessage_requestModeReject,
+		eResponseMessage_roundTripDelayResponse,
+		eResponseMessage_maintenanceLoopAck,
+		eResponseMessage_maintenanceLoopReject,
+		eResponseMessage_communicationModeResponse,
+		eResponseMessage_conferenceResponse,
+		eResponseMessage_multilinkResponse,
+		eResponseMessage_logicalChannelRateAcknowledge,
+		eResponseMessage_logicalChannelRateReject,
+	} choice;
+	union {
+		OpenLogicalChannelAck openLogicalChannelAck;
+	};
+} ResponseMessage;
+
+typedef struct MultimediaSystemControlMessage {	/* CHOICE */
+	enum {
+		eMultimediaSystemControlMessage_request,
+		eMultimediaSystemControlMessage_response,
+		eMultimediaSystemControlMessage_command,
+		eMultimediaSystemControlMessage_indication,
+	} choice;
+	union {
+		RequestMessage request;
+		ResponseMessage response;
+	};
+} MultimediaSystemControlMessage;
+
+typedef struct H323_UU_PDU_h245Control {	/* SEQUENCE OF */
+	int count;
+	MultimediaSystemControlMessage item[4];
+} H323_UU_PDU_h245Control;
+
+typedef struct H323_UU_PDU {	/* SEQUENCE */
+	enum {
+		eH323_UU_PDU_nonStandardData = (1 << 31),
+		eH323_UU_PDU_h4501SupplementaryService = (1 << 30),
+		eH323_UU_PDU_h245Tunneling = (1 << 29),
+		eH323_UU_PDU_h245Control = (1 << 28),
+		eH323_UU_PDU_nonStandardControl = (1 << 27),
+		eH323_UU_PDU_callLinkage = (1 << 26),
+		eH323_UU_PDU_tunnelledSignallingMessage = (1 << 25),
+		eH323_UU_PDU_provisionalRespToH245Tunneling = (1 << 24),
+		eH323_UU_PDU_stimulusControl = (1 << 23),
+		eH323_UU_PDU_genericData = (1 << 22),
+	} options;
+	H323_UU_PDU_h323_message_body h323_message_body;
+	H323_UU_PDU_h245Control h245Control;
+} H323_UU_PDU;
+
+typedef struct H323_UserInformation {	/* SEQUENCE */
+	enum {
+		eH323_UserInformation_user_data = (1 << 31),
+	} options;
+	H323_UU_PDU h323_uu_pdu;
+} H323_UserInformation;
+
+typedef struct GatekeeperRequest {	/* SEQUENCE */
+	enum {
+		eGatekeeperRequest_nonStandardData = (1 << 31),
+		eGatekeeperRequest_gatekeeperIdentifier = (1 << 30),
+		eGatekeeperRequest_callServices = (1 << 29),
+		eGatekeeperRequest_endpointAlias = (1 << 28),
+		eGatekeeperRequest_alternateEndpoints = (1 << 27),
+		eGatekeeperRequest_tokens = (1 << 26),
+		eGatekeeperRequest_cryptoTokens = (1 << 25),
+		eGatekeeperRequest_authenticationCapability = (1 << 24),
+		eGatekeeperRequest_algorithmOIDs = (1 << 23),
+		eGatekeeperRequest_integrity = (1 << 22),
+		eGatekeeperRequest_integrityCheckValue = (1 << 21),
+		eGatekeeperRequest_supportsAltGK = (1 << 20),
+		eGatekeeperRequest_featureSet = (1 << 19),
+		eGatekeeperRequest_genericData = (1 << 18),
+	} options;
+	TransportAddress rasAddress;
+} GatekeeperRequest;
+
+typedef struct GatekeeperConfirm {	/* SEQUENCE */
+	enum {
+		eGatekeeperConfirm_nonStandardData = (1 << 31),
+		eGatekeeperConfirm_gatekeeperIdentifier = (1 << 30),
+		eGatekeeperConfirm_alternateGatekeeper = (1 << 29),
+		eGatekeeperConfirm_authenticationMode = (1 << 28),
+		eGatekeeperConfirm_tokens = (1 << 27),
+		eGatekeeperConfirm_cryptoTokens = (1 << 26),
+		eGatekeeperConfirm_algorithmOID = (1 << 25),
+		eGatekeeperConfirm_integrity = (1 << 24),
+		eGatekeeperConfirm_integrityCheckValue = (1 << 23),
+		eGatekeeperConfirm_featureSet = (1 << 22),
+		eGatekeeperConfirm_genericData = (1 << 21),
+	} options;
+	TransportAddress rasAddress;
+} GatekeeperConfirm;
+
+typedef struct RegistrationRequest_callSignalAddress {	/* SEQUENCE OF */
+	int count;
+	TransportAddress item[10];
+} RegistrationRequest_callSignalAddress;
+
+typedef struct RegistrationRequest_rasAddress {	/* SEQUENCE OF */
+	int count;
+	TransportAddress item[10];
+} RegistrationRequest_rasAddress;
+
+typedef struct RegistrationRequest {	/* SEQUENCE */
+	enum {
+		eRegistrationRequest_nonStandardData = (1 << 31),
+		eRegistrationRequest_terminalAlias = (1 << 30),
+		eRegistrationRequest_gatekeeperIdentifier = (1 << 29),
+		eRegistrationRequest_alternateEndpoints = (1 << 28),
+		eRegistrationRequest_timeToLive = (1 << 27),
+		eRegistrationRequest_tokens = (1 << 26),
+		eRegistrationRequest_cryptoTokens = (1 << 25),
+		eRegistrationRequest_integrityCheckValue = (1 << 24),
+		eRegistrationRequest_keepAlive = (1 << 23),
+		eRegistrationRequest_endpointIdentifier = (1 << 22),
+		eRegistrationRequest_willSupplyUUIEs = (1 << 21),
+		eRegistrationRequest_maintainConnection = (1 << 20),
+		eRegistrationRequest_alternateTransportAddresses = (1 << 19),
+		eRegistrationRequest_additiveRegistration = (1 << 18),
+		eRegistrationRequest_terminalAliasPattern = (1 << 17),
+		eRegistrationRequest_supportsAltGK = (1 << 16),
+		eRegistrationRequest_usageReportingCapability = (1 << 15),
+		eRegistrationRequest_multipleCalls = (1 << 14),
+		eRegistrationRequest_supportedH248Packages = (1 << 13),
+		eRegistrationRequest_callCreditCapability = (1 << 12),
+		eRegistrationRequest_capacityReportingCapability = (1 << 11),
+		eRegistrationRequest_capacity = (1 << 10),
+		eRegistrationRequest_featureSet = (1 << 9),
+		eRegistrationRequest_genericData = (1 << 8),
+	} options;
+	RegistrationRequest_callSignalAddress callSignalAddress;
+	RegistrationRequest_rasAddress rasAddress;
+	unsigned timeToLive;
+} RegistrationRequest;
+
+typedef struct RegistrationConfirm_callSignalAddress {	/* SEQUENCE OF */
+	int count;
+	TransportAddress item[10];
+} RegistrationConfirm_callSignalAddress;
+
+typedef struct RegistrationConfirm {	/* SEQUENCE */
+	enum {
+		eRegistrationConfirm_nonStandardData = (1 << 31),
+		eRegistrationConfirm_terminalAlias = (1 << 30),
+		eRegistrationConfirm_gatekeeperIdentifier = (1 << 29),
+		eRegistrationConfirm_alternateGatekeeper = (1 << 28),
+		eRegistrationConfirm_timeToLive = (1 << 27),
+		eRegistrationConfirm_tokens = (1 << 26),
+		eRegistrationConfirm_cryptoTokens = (1 << 25),
+		eRegistrationConfirm_integrityCheckValue = (1 << 24),
+		eRegistrationConfirm_willRespondToIRR = (1 << 23),
+		eRegistrationConfirm_preGrantedARQ = (1 << 22),
+		eRegistrationConfirm_maintainConnection = (1 << 21),
+		eRegistrationConfirm_serviceControl = (1 << 20),
+		eRegistrationConfirm_supportsAdditiveRegistration = (1 << 19),
+		eRegistrationConfirm_terminalAliasPattern = (1 << 18),
+		eRegistrationConfirm_supportedPrefixes = (1 << 17),
+		eRegistrationConfirm_usageSpec = (1 << 16),
+		eRegistrationConfirm_featureServerAlias = (1 << 15),
+		eRegistrationConfirm_capacityReportingSpec = (1 << 14),
+		eRegistrationConfirm_featureSet = (1 << 13),
+		eRegistrationConfirm_genericData = (1 << 12),
+	} options;
+	RegistrationConfirm_callSignalAddress callSignalAddress;
+	unsigned timeToLive;
+} RegistrationConfirm;
+
+typedef struct UnregistrationRequest_callSignalAddress {	/* SEQUENCE OF */
+	int count;
+	TransportAddress item[10];
+} UnregistrationRequest_callSignalAddress;
+
+typedef struct UnregistrationRequest {	/* SEQUENCE */
+	enum {
+		eUnregistrationRequest_endpointAlias = (1 << 31),
+		eUnregistrationRequest_nonStandardData = (1 << 30),
+		eUnregistrationRequest_endpointIdentifier = (1 << 29),
+		eUnregistrationRequest_alternateEndpoints = (1 << 28),
+		eUnregistrationRequest_gatekeeperIdentifier = (1 << 27),
+		eUnregistrationRequest_tokens = (1 << 26),
+		eUnregistrationRequest_cryptoTokens = (1 << 25),
+		eUnregistrationRequest_integrityCheckValue = (1 << 24),
+		eUnregistrationRequest_reason = (1 << 23),
+		eUnregistrationRequest_endpointAliasPattern = (1 << 22),
+		eUnregistrationRequest_supportedPrefixes = (1 << 21),
+		eUnregistrationRequest_alternateGatekeeper = (1 << 20),
+		eUnregistrationRequest_genericData = (1 << 19),
+	} options;
+	UnregistrationRequest_callSignalAddress callSignalAddress;
+} UnregistrationRequest;
+
+typedef struct AdmissionRequest {	/* SEQUENCE */
+	enum {
+		eAdmissionRequest_callModel = (1 << 31),
+		eAdmissionRequest_destinationInfo = (1 << 30),
+		eAdmissionRequest_destCallSignalAddress = (1 << 29),
+		eAdmissionRequest_destExtraCallInfo = (1 << 28),
+		eAdmissionRequest_srcCallSignalAddress = (1 << 27),
+		eAdmissionRequest_nonStandardData = (1 << 26),
+		eAdmissionRequest_callServices = (1 << 25),
+		eAdmissionRequest_canMapAlias = (1 << 24),
+		eAdmissionRequest_callIdentifier = (1 << 23),
+		eAdmissionRequest_srcAlternatives = (1 << 22),
+		eAdmissionRequest_destAlternatives = (1 << 21),
+		eAdmissionRequest_gatekeeperIdentifier = (1 << 20),
+		eAdmissionRequest_tokens = (1 << 19),
+		eAdmissionRequest_cryptoTokens = (1 << 18),
+		eAdmissionRequest_integrityCheckValue = (1 << 17),
+		eAdmissionRequest_transportQOS = (1 << 16),
+		eAdmissionRequest_willSupplyUUIEs = (1 << 15),
+		eAdmissionRequest_callLinkage = (1 << 14),
+		eAdmissionRequest_gatewayDataRate = (1 << 13),
+		eAdmissionRequest_capacity = (1 << 12),
+		eAdmissionRequest_circuitInfo = (1 << 11),
+		eAdmissionRequest_desiredProtocols = (1 << 10),
+		eAdmissionRequest_desiredTunnelledProtocol = (1 << 9),
+		eAdmissionRequest_featureSet = (1 << 8),
+		eAdmissionRequest_genericData = (1 << 7),
+	} options;
+	TransportAddress destCallSignalAddress;
+	TransportAddress srcCallSignalAddress;
+} AdmissionRequest;
+
+typedef struct AdmissionConfirm {	/* SEQUENCE */
+	enum {
+		eAdmissionConfirm_irrFrequency = (1 << 31),
+		eAdmissionConfirm_nonStandardData = (1 << 30),
+		eAdmissionConfirm_destinationInfo = (1 << 29),
+		eAdmissionConfirm_destExtraCallInfo = (1 << 28),
+		eAdmissionConfirm_destinationType = (1 << 27),
+		eAdmissionConfirm_remoteExtensionAddress = (1 << 26),
+		eAdmissionConfirm_alternateEndpoints = (1 << 25),
+		eAdmissionConfirm_tokens = (1 << 24),
+		eAdmissionConfirm_cryptoTokens = (1 << 23),
+		eAdmissionConfirm_integrityCheckValue = (1 << 22),
+		eAdmissionConfirm_transportQOS = (1 << 21),
+		eAdmissionConfirm_willRespondToIRR = (1 << 20),
+		eAdmissionConfirm_uuiesRequested = (1 << 19),
+		eAdmissionConfirm_language = (1 << 18),
+		eAdmissionConfirm_alternateTransportAddresses = (1 << 17),
+		eAdmissionConfirm_useSpecifiedTransport = (1 << 16),
+		eAdmissionConfirm_circuitInfo = (1 << 15),
+		eAdmissionConfirm_usageSpec = (1 << 14),
+		eAdmissionConfirm_supportedProtocols = (1 << 13),
+		eAdmissionConfirm_serviceControl = (1 << 12),
+		eAdmissionConfirm_multipleCalls = (1 << 11),
+		eAdmissionConfirm_featureSet = (1 << 10),
+		eAdmissionConfirm_genericData = (1 << 9),
+	} options;
+	TransportAddress destCallSignalAddress;
+} AdmissionConfirm;
+
+typedef struct LocationRequest {	/* SEQUENCE */
+	enum {
+		eLocationRequest_endpointIdentifier = (1 << 31),
+		eLocationRequest_nonStandardData = (1 << 30),
+		eLocationRequest_sourceInfo = (1 << 29),
+		eLocationRequest_canMapAlias = (1 << 28),
+		eLocationRequest_gatekeeperIdentifier = (1 << 27),
+		eLocationRequest_tokens = (1 << 26),
+		eLocationRequest_cryptoTokens = (1 << 25),
+		eLocationRequest_integrityCheckValue = (1 << 24),
+		eLocationRequest_desiredProtocols = (1 << 23),
+		eLocationRequest_desiredTunnelledProtocol = (1 << 22),
+		eLocationRequest_featureSet = (1 << 21),
+		eLocationRequest_genericData = (1 << 20),
+		eLocationRequest_hopCount = (1 << 19),
+		eLocationRequest_circuitInfo = (1 << 18),
+	} options;
+	TransportAddress replyAddress;
+} LocationRequest;
+
+typedef struct LocationConfirm {	/* SEQUENCE */
+	enum {
+		eLocationConfirm_nonStandardData = (1 << 31),
+		eLocationConfirm_destinationInfo = (1 << 30),
+		eLocationConfirm_destExtraCallInfo = (1 << 29),
+		eLocationConfirm_destinationType = (1 << 28),
+		eLocationConfirm_remoteExtensionAddress = (1 << 27),
+		eLocationConfirm_alternateEndpoints = (1 << 26),
+		eLocationConfirm_tokens = (1 << 25),
+		eLocationConfirm_cryptoTokens = (1 << 24),
+		eLocationConfirm_integrityCheckValue = (1 << 23),
+		eLocationConfirm_alternateTransportAddresses = (1 << 22),
+		eLocationConfirm_supportedProtocols = (1 << 21),
+		eLocationConfirm_multipleCalls = (1 << 20),
+		eLocationConfirm_featureSet = (1 << 19),
+		eLocationConfirm_genericData = (1 << 18),
+		eLocationConfirm_circuitInfo = (1 << 17),
+		eLocationConfirm_serviceControl = (1 << 16),
+	} options;
+	TransportAddress callSignalAddress;
+	TransportAddress rasAddress;
+} LocationConfirm;
+
+typedef struct InfoRequestResponse_callSignalAddress {	/* SEQUENCE OF */
+	int count;
+	TransportAddress item[10];
+} InfoRequestResponse_callSignalAddress;
+
+typedef struct InfoRequestResponse {	/* SEQUENCE */
+	enum {
+		eInfoRequestResponse_nonStandardData = (1 << 31),
+		eInfoRequestResponse_endpointAlias = (1 << 30),
+		eInfoRequestResponse_perCallInfo = (1 << 29),
+		eInfoRequestResponse_tokens = (1 << 28),
+		eInfoRequestResponse_cryptoTokens = (1 << 27),
+		eInfoRequestResponse_integrityCheckValue = (1 << 26),
+		eInfoRequestResponse_needResponse = (1 << 25),
+		eInfoRequestResponse_capacity = (1 << 24),
+		eInfoRequestResponse_irrStatus = (1 << 23),
+		eInfoRequestResponse_unsolicited = (1 << 22),
+		eInfoRequestResponse_genericData = (1 << 21),
+	} options;
+	TransportAddress rasAddress;
+	InfoRequestResponse_callSignalAddress callSignalAddress;
+} InfoRequestResponse;
+
+typedef struct RasMessage {	/* CHOICE */
+	enum {
+		eRasMessage_gatekeeperRequest,
+		eRasMessage_gatekeeperConfirm,
+		eRasMessage_gatekeeperReject,
+		eRasMessage_registrationRequest,
+		eRasMessage_registrationConfirm,
+		eRasMessage_registrationReject,
+		eRasMessage_unregistrationRequest,
+		eRasMessage_unregistrationConfirm,
+		eRasMessage_unregistrationReject,
+		eRasMessage_admissionRequest,
+		eRasMessage_admissionConfirm,
+		eRasMessage_admissionReject,
+		eRasMessage_bandwidthRequest,
+		eRasMessage_bandwidthConfirm,
+		eRasMessage_bandwidthReject,
+		eRasMessage_disengageRequest,
+		eRasMessage_disengageConfirm,
+		eRasMessage_disengageReject,
+		eRasMessage_locationRequest,
+		eRasMessage_locationConfirm,
+		eRasMessage_locationReject,
+		eRasMessage_infoRequest,
+		eRasMessage_infoRequestResponse,
+		eRasMessage_nonStandardMessage,
+		eRasMessage_unknownMessageResponse,
+		eRasMessage_requestInProgress,
+		eRasMessage_resourcesAvailableIndicate,
+		eRasMessage_resourcesAvailableConfirm,
+		eRasMessage_infoRequestAck,
+		eRasMessage_infoRequestNak,
+		eRasMessage_serviceControlIndication,
+		eRasMessage_serviceControlResponse,
+	} choice;
+	union {
+		GatekeeperRequest gatekeeperRequest;
+		GatekeeperConfirm gatekeeperConfirm;
+		RegistrationRequest registrationRequest;
+		RegistrationConfirm registrationConfirm;
+		UnregistrationRequest unregistrationRequest;
+		AdmissionRequest admissionRequest;
+		AdmissionConfirm admissionConfirm;
+		LocationRequest locationRequest;
+		LocationConfirm locationConfirm;
+		InfoRequestResponse infoRequestResponse;
+	};
+} RasMessage;
diff --git a/net/ipv4/netfilter/ip_conntrack_helper_h323.c b/net/ipv4/netfilter/ip_conntrack_helper_h323.c
index daeb139..fc817fd 100644
--- a/net/ipv4/netfilter/ip_conntrack_helper_h323.c
+++ b/net/ipv4/netfilter/ip_conntrack_helper_h323.c
@@ -54,8 +54,6 @@
 #include <linux/netfilter_ipv4/ip_conntrack_h323.h>
 #include <linux/moduleparam.h>
 
-#include "ip_conntrack_helper_h323_asn1.h"
-
 #if 0
 #define DEBUGP printk
 #else
diff --git a/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c b/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c
index afa5251..4807800 100644
--- a/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c
+++ b/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c
@@ -15,7 +15,7 @@
 #else
 #include <stdio.h>
 #endif
-#include "ip_conntrack_helper_h323_asn1.h"
+#include <linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h>
 
 /* Trace Flag */
 #ifndef H323_TRACE
diff --git a/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.h b/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.h
deleted file mode 100644
index 0bd8280..0000000
--- a/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/****************************************************************************
- * ip_conntrack_helper_h323_asn1.h - BER and PER decoding library for H.323
- * 			      	     conntrack/NAT module.
- *
- * Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@hotmail.com>
- *
- * This source code is licensed under General Public License version 2.
- *
- *
- * This library is based on H.225 version 4, H.235 version 2 and H.245
- * version 7. It is extremely optimized to decode only the absolutely
- * necessary objects in a signal for Linux kernel NAT module use, so don't
- * expect it to be a full ASN.1 library.
- *
- * Features:
- *
- * 1. Small. The total size of code plus data is less than 20 KB (IA32).
- * 2. Fast. Decoding Netmeeting's Setup signal 1 million times on a PIII 866
- *    takes only 3.9 seconds.
- * 3. No memory allocation. It uses a static object. No need to initialize or
- *    cleanup.
- * 4. Thread safe.
- * 5. Support embedded architectures that has no misaligned memory access
- *    support.
- *
- * Limitations:
- *
- * 1. At most 30 faststart entries. Actually this is limited by ethernet's MTU.
- *    If a Setup signal contains more than 30 faststart, the packet size will
- *    very likely exceed the MTU size, then the TPKT will be fragmented. I
- *    don't know how to handle this in a Netfilter module. Anybody can help?
- *    Although I think 30 is enough for most of the cases.
- * 2. IPv4 addresses only.
- *
- ****************************************************************************/
-
-#ifndef _IP_CONNTRACK_HELPER_H323_ASN1_H_
-#define _IP_CONNTRACK_HELPER_H323_ASN1_H_
-
-/*****************************************************************************
- * H.323 Types
- ****************************************************************************/
-#include "ip_conntrack_helper_h323_types.h"
-
-typedef struct {
-	enum {
-		Q931_NationalEscape = 0x00,
-		Q931_Alerting = 0x01,
-		Q931_CallProceeding = 0x02,
-		Q931_Connect = 0x07,
-		Q931_ConnectAck = 0x0F,
-		Q931_Progress = 0x03,
-		Q931_Setup = 0x05,
-		Q931_SetupAck = 0x0D,
-		Q931_Resume = 0x26,
-		Q931_ResumeAck = 0x2E,
-		Q931_ResumeReject = 0x22,
-		Q931_Suspend = 0x25,
-		Q931_SuspendAck = 0x2D,
-		Q931_SuspendReject = 0x21,
-		Q931_UserInformation = 0x20,
-		Q931_Disconnect = 0x45,
-		Q931_Release = 0x4D,
-		Q931_ReleaseComplete = 0x5A,
-		Q931_Restart = 0x46,
-		Q931_RestartAck = 0x4E,
-		Q931_Segment = 0x60,
-		Q931_CongestionCtrl = 0x79,
-		Q931_Information = 0x7B,
-		Q931_Notify = 0x6E,
-		Q931_Status = 0x7D,
-		Q931_StatusEnquiry = 0x75,
-		Q931_Facility = 0x62
-	} MessageType;
-	H323_UserInformation UUIE;
-} Q931;
-
-/*****************************************************************************
- * Decode Functions Return Codes
- ****************************************************************************/
-
-#define H323_ERROR_NONE 0	/* Decoded successfully */
-#define H323_ERROR_STOP 1	/* Decoding stopped, not really an error */
-#define H323_ERROR_BOUND -1
-#define H323_ERROR_RANGE -2
-
-
-/*****************************************************************************
- * Decode Functions
- ****************************************************************************/
-
-int DecodeRasMessage(unsigned char *buf, size_t sz, RasMessage * ras);
-int DecodeQ931(unsigned char *buf, size_t sz, Q931 * q931);
-int DecodeMultimediaSystemControlMessage(unsigned char *buf, size_t sz,
-					 MultimediaSystemControlMessage *
-					 mscm);
-
-#endif
diff --git a/net/ipv4/netfilter/ip_conntrack_helper_h323_types.h b/net/ipv4/netfilter/ip_conntrack_helper_h323_types.h
deleted file mode 100644
index cc98f7a..0000000
--- a/net/ipv4/netfilter/ip_conntrack_helper_h323_types.h
+++ /dev/null
@@ -1,938 +0,0 @@
-/* Generated by Jing Min Zhao's ASN.1 parser, Mar 15 2006
- *
- * Copyright (c) 2006 Jing Min Zhao <zhaojingmin@users.sourceforge.net>
- *
- * This source code is licensed under General Public License version 2.
- */
-
-typedef struct TransportAddress_ipAddress {	/* SEQUENCE */
-	int options;		/* No use */
-	unsigned ip;
-} TransportAddress_ipAddress;
-
-typedef struct TransportAddress {	/* CHOICE */
-	enum {
-		eTransportAddress_ipAddress,
-		eTransportAddress_ipSourceRoute,
-		eTransportAddress_ipxAddress,
-		eTransportAddress_ip6Address,
-		eTransportAddress_netBios,
-		eTransportAddress_nsap,
-		eTransportAddress_nonStandardAddress,
-	} choice;
-	union {
-		TransportAddress_ipAddress ipAddress;
-	};
-} TransportAddress;
-
-typedef struct DataProtocolCapability {	/* CHOICE */
-	enum {
-		eDataProtocolCapability_nonStandard,
-		eDataProtocolCapability_v14buffered,
-		eDataProtocolCapability_v42lapm,
-		eDataProtocolCapability_hdlcFrameTunnelling,
-		eDataProtocolCapability_h310SeparateVCStack,
-		eDataProtocolCapability_h310SingleVCStack,
-		eDataProtocolCapability_transparent,
-		eDataProtocolCapability_segmentationAndReassembly,
-		eDataProtocolCapability_hdlcFrameTunnelingwSAR,
-		eDataProtocolCapability_v120,
-		eDataProtocolCapability_separateLANStack,
-		eDataProtocolCapability_v76wCompression,
-		eDataProtocolCapability_tcp,
-		eDataProtocolCapability_udp,
-	} choice;
-} DataProtocolCapability;
-
-typedef struct DataApplicationCapability_application {	/* CHOICE */
-	enum {
-		eDataApplicationCapability_application_nonStandard,
-		eDataApplicationCapability_application_t120,
-		eDataApplicationCapability_application_dsm_cc,
-		eDataApplicationCapability_application_userData,
-		eDataApplicationCapability_application_t84,
-		eDataApplicationCapability_application_t434,
-		eDataApplicationCapability_application_h224,
-		eDataApplicationCapability_application_nlpid,
-		eDataApplicationCapability_application_dsvdControl,
-		eDataApplicationCapability_application_h222DataPartitioning,
-		eDataApplicationCapability_application_t30fax,
-		eDataApplicationCapability_application_t140,
-		eDataApplicationCapability_application_t38fax,
-		eDataApplicationCapability_application_genericDataCapability,
-	} choice;
-	union {
-		DataProtocolCapability t120;
-	};
-} DataApplicationCapability_application;
-
-typedef struct DataApplicationCapability {	/* SEQUENCE */
-	int options;		/* No use */
-	DataApplicationCapability_application application;
-} DataApplicationCapability;
-
-typedef struct DataType {	/* CHOICE */
-	enum {
-		eDataType_nonStandard,
-		eDataType_nullData,
-		eDataType_videoData,
-		eDataType_audioData,
-		eDataType_data,
-		eDataType_encryptionData,
-		eDataType_h235Control,
-		eDataType_h235Media,
-		eDataType_multiplexedStream,
-	} choice;
-	union {
-		DataApplicationCapability data;
-	};
-} DataType;
-
-typedef struct UnicastAddress_iPAddress {	/* SEQUENCE */
-	int options;		/* No use */
-	unsigned network;
-} UnicastAddress_iPAddress;
-
-typedef struct UnicastAddress {	/* CHOICE */
-	enum {
-		eUnicastAddress_iPAddress,
-		eUnicastAddress_iPXAddress,
-		eUnicastAddress_iP6Address,
-		eUnicastAddress_netBios,
-		eUnicastAddress_iPSourceRouteAddress,
-		eUnicastAddress_nsap,
-		eUnicastAddress_nonStandardAddress,
-	} choice;
-	union {
-		UnicastAddress_iPAddress iPAddress;
-	};
-} UnicastAddress;
-
-typedef struct H245_TransportAddress {	/* CHOICE */
-	enum {
-		eH245_TransportAddress_unicastAddress,
-		eH245_TransportAddress_multicastAddress,
-	} choice;
-	union {
-		UnicastAddress unicastAddress;
-	};
-} H245_TransportAddress;
-
-typedef struct H2250LogicalChannelParameters {	/* SEQUENCE */
-	enum {
-		eH2250LogicalChannelParameters_nonStandard = (1 << 31),
-		eH2250LogicalChannelParameters_associatedSessionID =
-		    (1 << 30),
-		eH2250LogicalChannelParameters_mediaChannel = (1 << 29),
-		eH2250LogicalChannelParameters_mediaGuaranteedDelivery =
-		    (1 << 28),
-		eH2250LogicalChannelParameters_mediaControlChannel =
-		    (1 << 27),
-		eH2250LogicalChannelParameters_mediaControlGuaranteedDelivery
-		    = (1 << 26),
-		eH2250LogicalChannelParameters_silenceSuppression = (1 << 25),
-		eH2250LogicalChannelParameters_destination = (1 << 24),
-		eH2250LogicalChannelParameters_dynamicRTPPayloadType =
-		    (1 << 23),
-		eH2250LogicalChannelParameters_mediaPacketization = (1 << 22),
-		eH2250LogicalChannelParameters_transportCapability =
-		    (1 << 21),
-		eH2250LogicalChannelParameters_redundancyEncoding = (1 << 20),
-		eH2250LogicalChannelParameters_source = (1 << 19),
-	} options;
-	H245_TransportAddress mediaChannel;
-	H245_TransportAddress mediaControlChannel;
-} H2250LogicalChannelParameters;
-
-typedef struct OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters {	/* CHOICE */
-	enum {
-		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h222LogicalChannelParameters,
-		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h223LogicalChannelParameters,
-		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_v76LogicalChannelParameters,
-		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters,
-		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_none,
-	} choice;
-	union {
-		H2250LogicalChannelParameters h2250LogicalChannelParameters;
-	};
-} OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters;
-
-typedef struct OpenLogicalChannel_forwardLogicalChannelParameters {	/* SEQUENCE */
-	enum {
-		eOpenLogicalChannel_forwardLogicalChannelParameters_portNumber
-		    = (1 << 31),
-		eOpenLogicalChannel_forwardLogicalChannelParameters_forwardLogicalChannelDependency
-		    = (1 << 30),
-		eOpenLogicalChannel_forwardLogicalChannelParameters_replacementFor
-		    = (1 << 29),
-	} options;
-	DataType dataType;
-	OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters
-	    multiplexParameters;
-} OpenLogicalChannel_forwardLogicalChannelParameters;
-
-typedef struct OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters {	/* CHOICE */
-	enum {
-		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_h223LogicalChannelParameters,
-		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_v76LogicalChannelParameters,
-		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters,
-	} choice;
-	union {
-		H2250LogicalChannelParameters h2250LogicalChannelParameters;
-	};
-} OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters;
-
-typedef struct OpenLogicalChannel_reverseLogicalChannelParameters {	/* SEQUENCE */
-	enum {
-		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters
-		    = (1 << 31),
-		eOpenLogicalChannel_reverseLogicalChannelParameters_reverseLogicalChannelDependency
-		    = (1 << 30),
-		eOpenLogicalChannel_reverseLogicalChannelParameters_replacementFor
-		    = (1 << 29),
-	} options;
-	OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters
-	    multiplexParameters;
-} OpenLogicalChannel_reverseLogicalChannelParameters;
-
-typedef struct NetworkAccessParameters_networkAddress {	/* CHOICE */
-	enum {
-		eNetworkAccessParameters_networkAddress_q2931Address,
-		eNetworkAccessParameters_networkAddress_e164Address,
-		eNetworkAccessParameters_networkAddress_localAreaAddress,
-	} choice;
-	union {
-		H245_TransportAddress localAreaAddress;
-	};
-} NetworkAccessParameters_networkAddress;
-
-typedef struct NetworkAccessParameters {	/* SEQUENCE */
-	enum {
-		eNetworkAccessParameters_distribution = (1 << 31),
-		eNetworkAccessParameters_externalReference = (1 << 30),
-		eNetworkAccessParameters_t120SetupProcedure = (1 << 29),
-	} options;
-	NetworkAccessParameters_networkAddress networkAddress;
-} NetworkAccessParameters;
-
-typedef struct OpenLogicalChannel {	/* SEQUENCE */
-	enum {
-		eOpenLogicalChannel_reverseLogicalChannelParameters =
-		    (1 << 31),
-		eOpenLogicalChannel_separateStack = (1 << 30),
-		eOpenLogicalChannel_encryptionSync = (1 << 29),
-	} options;
-	OpenLogicalChannel_forwardLogicalChannelParameters
-	    forwardLogicalChannelParameters;
-	OpenLogicalChannel_reverseLogicalChannelParameters
-	    reverseLogicalChannelParameters;
-	NetworkAccessParameters separateStack;
-} OpenLogicalChannel;
-
-typedef struct Setup_UUIE_fastStart {	/* SEQUENCE OF */
-	int count;
-	OpenLogicalChannel item[30];
-} Setup_UUIE_fastStart;
-
-typedef struct Setup_UUIE {	/* SEQUENCE */
-	enum {
-		eSetup_UUIE_h245Address = (1 << 31),
-		eSetup_UUIE_sourceAddress = (1 << 30),
-		eSetup_UUIE_destinationAddress = (1 << 29),
-		eSetup_UUIE_destCallSignalAddress = (1 << 28),
-		eSetup_UUIE_destExtraCallInfo = (1 << 27),
-		eSetup_UUIE_destExtraCRV = (1 << 26),
-		eSetup_UUIE_callServices = (1 << 25),
-		eSetup_UUIE_sourceCallSignalAddress = (1 << 24),
-		eSetup_UUIE_remoteExtensionAddress = (1 << 23),
-		eSetup_UUIE_callIdentifier = (1 << 22),
-		eSetup_UUIE_h245SecurityCapability = (1 << 21),
-		eSetup_UUIE_tokens = (1 << 20),
-		eSetup_UUIE_cryptoTokens = (1 << 19),
-		eSetup_UUIE_fastStart = (1 << 18),
-		eSetup_UUIE_mediaWaitForConnect = (1 << 17),
-		eSetup_UUIE_canOverlapSend = (1 << 16),
-		eSetup_UUIE_endpointIdentifier = (1 << 15),
-		eSetup_UUIE_multipleCalls = (1 << 14),
-		eSetup_UUIE_maintainConnection = (1 << 13),
-		eSetup_UUIE_connectionParameters = (1 << 12),
-		eSetup_UUIE_language = (1 << 11),
-		eSetup_UUIE_presentationIndicator = (1 << 10),
-		eSetup_UUIE_screeningIndicator = (1 << 9),
-		eSetup_UUIE_serviceControl = (1 << 8),
-		eSetup_UUIE_symmetricOperationRequired = (1 << 7),
-		eSetup_UUIE_capacity = (1 << 6),
-		eSetup_UUIE_circuitInfo = (1 << 5),
-		eSetup_UUIE_desiredProtocols = (1 << 4),
-		eSetup_UUIE_neededFeatures = (1 << 3),
-		eSetup_UUIE_desiredFeatures = (1 << 2),
-		eSetup_UUIE_supportedFeatures = (1 << 1),
-		eSetup_UUIE_parallelH245Control = (1 << 0),
-	} options;
-	TransportAddress h245Address;
-	TransportAddress destCallSignalAddress;
-	TransportAddress sourceCallSignalAddress;
-	Setup_UUIE_fastStart fastStart;
-} Setup_UUIE;
-
-typedef struct CallProceeding_UUIE_fastStart {	/* SEQUENCE OF */
-	int count;
-	OpenLogicalChannel item[30];
-} CallProceeding_UUIE_fastStart;
-
-typedef struct CallProceeding_UUIE {	/* SEQUENCE */
-	enum {
-		eCallProceeding_UUIE_h245Address = (1 << 31),
-		eCallProceeding_UUIE_callIdentifier = (1 << 30),
-		eCallProceeding_UUIE_h245SecurityMode = (1 << 29),
-		eCallProceeding_UUIE_tokens = (1 << 28),
-		eCallProceeding_UUIE_cryptoTokens = (1 << 27),
-		eCallProceeding_UUIE_fastStart = (1 << 26),
-		eCallProceeding_UUIE_multipleCalls = (1 << 25),
-		eCallProceeding_UUIE_maintainConnection = (1 << 24),
-		eCallProceeding_UUIE_fastConnectRefused = (1 << 23),
-		eCallProceeding_UUIE_featureSet = (1 << 22),
-	} options;
-	TransportAddress h245Address;
-	CallProceeding_UUIE_fastStart fastStart;
-} CallProceeding_UUIE;
-
-typedef struct Connect_UUIE_fastStart {	/* SEQUENCE OF */
-	int count;
-	OpenLogicalChannel item[30];
-} Connect_UUIE_fastStart;
-
-typedef struct Connect_UUIE {	/* SEQUENCE */
-	enum {
-		eConnect_UUIE_h245Address = (1 << 31),
-		eConnect_UUIE_callIdentifier = (1 << 30),
-		eConnect_UUIE_h245SecurityMode = (1 << 29),
-		eConnect_UUIE_tokens = (1 << 28),
-		eConnect_UUIE_cryptoTokens = (1 << 27),
-		eConnect_UUIE_fastStart = (1 << 26),
-		eConnect_UUIE_multipleCalls = (1 << 25),
-		eConnect_UUIE_maintainConnection = (1 << 24),
-		eConnect_UUIE_language = (1 << 23),
-		eConnect_UUIE_connectedAddress = (1 << 22),
-		eConnect_UUIE_presentationIndicator = (1 << 21),
-		eConnect_UUIE_screeningIndicator = (1 << 20),
-		eConnect_UUIE_fastConnectRefused = (1 << 19),
-		eConnect_UUIE_serviceControl = (1 << 18),
-		eConnect_UUIE_capacity = (1 << 17),
-		eConnect_UUIE_featureSet = (1 << 16),
-	} options;
-	TransportAddress h245Address;
-	Connect_UUIE_fastStart fastStart;
-} Connect_UUIE;
-
-typedef struct Alerting_UUIE_fastStart {	/* SEQUENCE OF */
-	int count;
-	OpenLogicalChannel item[30];
-} Alerting_UUIE_fastStart;
-
-typedef struct Alerting_UUIE {	/* SEQUENCE */
-	enum {
-		eAlerting_UUIE_h245Address = (1 << 31),
-		eAlerting_UUIE_callIdentifier = (1 << 30),
-		eAlerting_UUIE_h245SecurityMode = (1 << 29),
-		eAlerting_UUIE_tokens = (1 << 28),
-		eAlerting_UUIE_cryptoTokens = (1 << 27),
-		eAlerting_UUIE_fastStart = (1 << 26),
-		eAlerting_UUIE_multipleCalls = (1 << 25),
-		eAlerting_UUIE_maintainConnection = (1 << 24),
-		eAlerting_UUIE_alertingAddress = (1 << 23),
-		eAlerting_UUIE_presentationIndicator = (1 << 22),
-		eAlerting_UUIE_screeningIndicator = (1 << 21),
-		eAlerting_UUIE_fastConnectRefused = (1 << 20),
-		eAlerting_UUIE_serviceControl = (1 << 19),
-		eAlerting_UUIE_capacity = (1 << 18),
-		eAlerting_UUIE_featureSet = (1 << 17),
-	} options;
-	TransportAddress h245Address;
-	Alerting_UUIE_fastStart fastStart;
-} Alerting_UUIE;
-
-typedef struct Information_UUIE_fastStart {	/* SEQUENCE OF */
-	int count;
-	OpenLogicalChannel item[30];
-} Information_UUIE_fastStart;
-
-typedef struct Information_UUIE {	/* SEQUENCE */
-	enum {
-		eInformation_UUIE_callIdentifier = (1 << 31),
-		eInformation_UUIE_tokens = (1 << 30),
-		eInformation_UUIE_cryptoTokens = (1 << 29),
-		eInformation_UUIE_fastStart = (1 << 28),
-		eInformation_UUIE_fastConnectRefused = (1 << 27),
-		eInformation_UUIE_circuitInfo = (1 << 26),
-	} options;
-	Information_UUIE_fastStart fastStart;
-} Information_UUIE;
-
-typedef struct FacilityReason {	/* CHOICE */
-	enum {
-		eFacilityReason_routeCallToGatekeeper,
-		eFacilityReason_callForwarded,
-		eFacilityReason_routeCallToMC,
-		eFacilityReason_undefinedReason,
-		eFacilityReason_conferenceListChoice,
-		eFacilityReason_startH245,
-		eFacilityReason_noH245,
-		eFacilityReason_newTokens,
-		eFacilityReason_featureSetUpdate,
-		eFacilityReason_forwardedElements,
-		eFacilityReason_transportedInformation,
-	} choice;
-} FacilityReason;
-
-typedef struct Facility_UUIE_fastStart {	/* SEQUENCE OF */
-	int count;
-	OpenLogicalChannel item[30];
-} Facility_UUIE_fastStart;
-
-typedef struct Facility_UUIE {	/* SEQUENCE */
-	enum {
-		eFacility_UUIE_alternativeAddress = (1 << 31),
-		eFacility_UUIE_alternativeAliasAddress = (1 << 30),
-		eFacility_UUIE_conferenceID = (1 << 29),
-		eFacility_UUIE_callIdentifier = (1 << 28),
-		eFacility_UUIE_destExtraCallInfo = (1 << 27),
-		eFacility_UUIE_remoteExtensionAddress = (1 << 26),
-		eFacility_UUIE_tokens = (1 << 25),
-		eFacility_UUIE_cryptoTokens = (1 << 24),
-		eFacility_UUIE_conferences = (1 << 23),
-		eFacility_UUIE_h245Address = (1 << 22),
-		eFacility_UUIE_fastStart = (1 << 21),
-		eFacility_UUIE_multipleCalls = (1 << 20),
-		eFacility_UUIE_maintainConnection = (1 << 19),
-		eFacility_UUIE_fastConnectRefused = (1 << 18),
-		eFacility_UUIE_serviceControl = (1 << 17),
-		eFacility_UUIE_circuitInfo = (1 << 16),
-		eFacility_UUIE_featureSet = (1 << 15),
-		eFacility_UUIE_destinationInfo = (1 << 14),
-		eFacility_UUIE_h245SecurityMode = (1 << 13),
-	} options;
-	FacilityReason reason;
-	TransportAddress h245Address;
-	Facility_UUIE_fastStart fastStart;
-} Facility_UUIE;
-
-typedef struct Progress_UUIE_fastStart {	/* SEQUENCE OF */
-	int count;
-	OpenLogicalChannel item[30];
-} Progress_UUIE_fastStart;
-
-typedef struct Progress_UUIE {	/* SEQUENCE */
-	enum {
-		eProgress_UUIE_h245Address = (1 << 31),
-		eProgress_UUIE_h245SecurityMode = (1 << 30),
-		eProgress_UUIE_tokens = (1 << 29),
-		eProgress_UUIE_cryptoTokens = (1 << 28),
-		eProgress_UUIE_fastStart = (1 << 27),
-		eProgress_UUIE_multipleCalls = (1 << 26),
-		eProgress_UUIE_maintainConnection = (1 << 25),
-		eProgress_UUIE_fastConnectRefused = (1 << 24),
-	} options;
-	TransportAddress h245Address;
-	Progress_UUIE_fastStart fastStart;
-} Progress_UUIE;
-
-typedef struct H323_UU_PDU_h323_message_body {	/* CHOICE */
-	enum {
-		eH323_UU_PDU_h323_message_body_setup,
-		eH323_UU_PDU_h323_message_body_callProceeding,
-		eH323_UU_PDU_h323_message_body_connect,
-		eH323_UU_PDU_h323_message_body_alerting,
-		eH323_UU_PDU_h323_message_body_information,
-		eH323_UU_PDU_h323_message_body_releaseComplete,
-		eH323_UU_PDU_h323_message_body_facility,
-		eH323_UU_PDU_h323_message_body_progress,
-		eH323_UU_PDU_h323_message_body_empty,
-		eH323_UU_PDU_h323_message_body_status,
-		eH323_UU_PDU_h323_message_body_statusInquiry,
-		eH323_UU_PDU_h323_message_body_setupAcknowledge,
-		eH323_UU_PDU_h323_message_body_notify,
-	} choice;
-	union {
-		Setup_UUIE setup;
-		CallProceeding_UUIE callProceeding;
-		Connect_UUIE connect;
-		Alerting_UUIE alerting;
-		Information_UUIE information;
-		Facility_UUIE facility;
-		Progress_UUIE progress;
-	};
-} H323_UU_PDU_h323_message_body;
-
-typedef struct RequestMessage {	/* CHOICE */
-	enum {
-		eRequestMessage_nonStandard,
-		eRequestMessage_masterSlaveDetermination,
-		eRequestMessage_terminalCapabilitySet,
-		eRequestMessage_openLogicalChannel,
-		eRequestMessage_closeLogicalChannel,
-		eRequestMessage_requestChannelClose,
-		eRequestMessage_multiplexEntrySend,
-		eRequestMessage_requestMultiplexEntry,
-		eRequestMessage_requestMode,
-		eRequestMessage_roundTripDelayRequest,
-		eRequestMessage_maintenanceLoopRequest,
-		eRequestMessage_communicationModeRequest,
-		eRequestMessage_conferenceRequest,
-		eRequestMessage_multilinkRequest,
-		eRequestMessage_logicalChannelRateRequest,
-	} choice;
-	union {
-		OpenLogicalChannel openLogicalChannel;
-	};
-} RequestMessage;
-
-typedef struct OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters {	/* CHOICE */
-	enum {
-		eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters_h222LogicalChannelParameters,
-		eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters,
-	} choice;
-	union {
-		H2250LogicalChannelParameters h2250LogicalChannelParameters;
-	};
-} OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters;
-
-typedef struct OpenLogicalChannelAck_reverseLogicalChannelParameters {	/* SEQUENCE */
-	enum {
-		eOpenLogicalChannelAck_reverseLogicalChannelParameters_portNumber
-		    = (1 << 31),
-		eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters
-		    = (1 << 30),
-		eOpenLogicalChannelAck_reverseLogicalChannelParameters_replacementFor
-		    = (1 << 29),
-	} options;
-	OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters
-	    multiplexParameters;
-} OpenLogicalChannelAck_reverseLogicalChannelParameters;
-
-typedef struct H2250LogicalChannelAckParameters {	/* SEQUENCE */
-	enum {
-		eH2250LogicalChannelAckParameters_nonStandard = (1 << 31),
-		eH2250LogicalChannelAckParameters_sessionID = (1 << 30),
-		eH2250LogicalChannelAckParameters_mediaChannel = (1 << 29),
-		eH2250LogicalChannelAckParameters_mediaControlChannel =
-		    (1 << 28),
-		eH2250LogicalChannelAckParameters_dynamicRTPPayloadType =
-		    (1 << 27),
-		eH2250LogicalChannelAckParameters_flowControlToZero =
-		    (1 << 26),
-		eH2250LogicalChannelAckParameters_portNumber = (1 << 25),
-	} options;
-	H245_TransportAddress mediaChannel;
-	H245_TransportAddress mediaControlChannel;
-} H2250LogicalChannelAckParameters;
-
-typedef struct OpenLogicalChannelAck_forwardMultiplexAckParameters {	/* CHOICE */
-	enum {
-		eOpenLogicalChannelAck_forwardMultiplexAckParameters_h2250LogicalChannelAckParameters,
-	} choice;
-	union {
-		H2250LogicalChannelAckParameters
-		    h2250LogicalChannelAckParameters;
-	};
-} OpenLogicalChannelAck_forwardMultiplexAckParameters;
-
-typedef struct OpenLogicalChannelAck {	/* SEQUENCE */
-	enum {
-		eOpenLogicalChannelAck_reverseLogicalChannelParameters =
-		    (1 << 31),
-		eOpenLogicalChannelAck_separateStack = (1 << 30),
-		eOpenLogicalChannelAck_forwardMultiplexAckParameters =
-		    (1 << 29),
-		eOpenLogicalChannelAck_encryptionSync = (1 << 28),
-	} options;
-	OpenLogicalChannelAck_reverseLogicalChannelParameters
-	    reverseLogicalChannelParameters;
-	OpenLogicalChannelAck_forwardMultiplexAckParameters
-	    forwardMultiplexAckParameters;
-} OpenLogicalChannelAck;
-
-typedef struct ResponseMessage {	/* CHOICE */
-	enum {
-		eResponseMessage_nonStandard,
-		eResponseMessage_masterSlaveDeterminationAck,
-		eResponseMessage_masterSlaveDeterminationReject,
-		eResponseMessage_terminalCapabilitySetAck,
-		eResponseMessage_terminalCapabilitySetReject,
-		eResponseMessage_openLogicalChannelAck,
-		eResponseMessage_openLogicalChannelReject,
-		eResponseMessage_closeLogicalChannelAck,
-		eResponseMessage_requestChannelCloseAck,
-		eResponseMessage_requestChannelCloseReject,
-		eResponseMessage_multiplexEntrySendAck,
-		eResponseMessage_multiplexEntrySendReject,
-		eResponseMessage_requestMultiplexEntryAck,
-		eResponseMessage_requestMultiplexEntryReject,
-		eResponseMessage_requestModeAck,
-		eResponseMessage_requestModeReject,
-		eResponseMessage_roundTripDelayResponse,
-		eResponseMessage_maintenanceLoopAck,
-		eResponseMessage_maintenanceLoopReject,
-		eResponseMessage_communicationModeResponse,
-		eResponseMessage_conferenceResponse,
-		eResponseMessage_multilinkResponse,
-		eResponseMessage_logicalChannelRateAcknowledge,
-		eResponseMessage_logicalChannelRateReject,
-	} choice;
-	union {
-		OpenLogicalChannelAck openLogicalChannelAck;
-	};
-} ResponseMessage;
-
-typedef struct MultimediaSystemControlMessage {	/* CHOICE */
-	enum {
-		eMultimediaSystemControlMessage_request,
-		eMultimediaSystemControlMessage_response,
-		eMultimediaSystemControlMessage_command,
-		eMultimediaSystemControlMessage_indication,
-	} choice;
-	union {
-		RequestMessage request;
-		ResponseMessage response;
-	};
-} MultimediaSystemControlMessage;
-
-typedef struct H323_UU_PDU_h245Control {	/* SEQUENCE OF */
-	int count;
-	MultimediaSystemControlMessage item[4];
-} H323_UU_PDU_h245Control;
-
-typedef struct H323_UU_PDU {	/* SEQUENCE */
-	enum {
-		eH323_UU_PDU_nonStandardData = (1 << 31),
-		eH323_UU_PDU_h4501SupplementaryService = (1 << 30),
-		eH323_UU_PDU_h245Tunneling = (1 << 29),
-		eH323_UU_PDU_h245Control = (1 << 28),
-		eH323_UU_PDU_nonStandardControl = (1 << 27),
-		eH323_UU_PDU_callLinkage = (1 << 26),
-		eH323_UU_PDU_tunnelledSignallingMessage = (1 << 25),
-		eH323_UU_PDU_provisionalRespToH245Tunneling = (1 << 24),
-		eH323_UU_PDU_stimulusControl = (1 << 23),
-		eH323_UU_PDU_genericData = (1 << 22),
-	} options;
-	H323_UU_PDU_h323_message_body h323_message_body;
-	H323_UU_PDU_h245Control h245Control;
-} H323_UU_PDU;
-
-typedef struct H323_UserInformation {	/* SEQUENCE */
-	enum {
-		eH323_UserInformation_user_data = (1 << 31),
-	} options;
-	H323_UU_PDU h323_uu_pdu;
-} H323_UserInformation;
-
-typedef struct GatekeeperRequest {	/* SEQUENCE */
-	enum {
-		eGatekeeperRequest_nonStandardData = (1 << 31),
-		eGatekeeperRequest_gatekeeperIdentifier = (1 << 30),
-		eGatekeeperRequest_callServices = (1 << 29),
-		eGatekeeperRequest_endpointAlias = (1 << 28),
-		eGatekeeperRequest_alternateEndpoints = (1 << 27),
-		eGatekeeperRequest_tokens = (1 << 26),
-		eGatekeeperRequest_cryptoTokens = (1 << 25),
-		eGatekeeperRequest_authenticationCapability = (1 << 24),
-		eGatekeeperRequest_algorithmOIDs = (1 << 23),
-		eGatekeeperRequest_integrity = (1 << 22),
-		eGatekeeperRequest_integrityCheckValue = (1 << 21),
-		eGatekeeperRequest_supportsAltGK = (1 << 20),
-		eGatekeeperRequest_featureSet = (1 << 19),
-		eGatekeeperRequest_genericData = (1 << 18),
-	} options;
-	TransportAddress rasAddress;
-} GatekeeperRequest;
-
-typedef struct GatekeeperConfirm {	/* SEQUENCE */
-	enum {
-		eGatekeeperConfirm_nonStandardData = (1 << 31),
-		eGatekeeperConfirm_gatekeeperIdentifier = (1 << 30),
-		eGatekeeperConfirm_alternateGatekeeper = (1 << 29),
-		eGatekeeperConfirm_authenticationMode = (1 << 28),
-		eGatekeeperConfirm_tokens = (1 << 27),
-		eGatekeeperConfirm_cryptoTokens = (1 << 26),
-		eGatekeeperConfirm_algorithmOID = (1 << 25),
-		eGatekeeperConfirm_integrity = (1 << 24),
-		eGatekeeperConfirm_integrityCheckValue = (1 << 23),
-		eGatekeeperConfirm_featureSet = (1 << 22),
-		eGatekeeperConfirm_genericData = (1 << 21),
-	} options;
-	TransportAddress rasAddress;
-} GatekeeperConfirm;
-
-typedef struct RegistrationRequest_callSignalAddress {	/* SEQUENCE OF */
-	int count;
-	TransportAddress item[10];
-} RegistrationRequest_callSignalAddress;
-
-typedef struct RegistrationRequest_rasAddress {	/* SEQUENCE OF */
-	int count;
-	TransportAddress item[10];
-} RegistrationRequest_rasAddress;
-
-typedef struct RegistrationRequest {	/* SEQUENCE */
-	enum {
-		eRegistrationRequest_nonStandardData = (1 << 31),
-		eRegistrationRequest_terminalAlias = (1 << 30),
-		eRegistrationRequest_gatekeeperIdentifier = (1 << 29),
-		eRegistrationRequest_alternateEndpoints = (1 << 28),
-		eRegistrationRequest_timeToLive = (1 << 27),
-		eRegistrationRequest_tokens = (1 << 26),
-		eRegistrationRequest_cryptoTokens = (1 << 25),
-		eRegistrationRequest_integrityCheckValue = (1 << 24),
-		eRegistrationRequest_keepAlive = (1 << 23),
-		eRegistrationRequest_endpointIdentifier = (1 << 22),
-		eRegistrationRequest_willSupplyUUIEs = (1 << 21),
-		eRegistrationRequest_maintainConnection = (1 << 20),
-		eRegistrationRequest_alternateTransportAddresses = (1 << 19),
-		eRegistrationRequest_additiveRegistration = (1 << 18),
-		eRegistrationRequest_terminalAliasPattern = (1 << 17),
-		eRegistrationRequest_supportsAltGK = (1 << 16),
-		eRegistrationRequest_usageReportingCapability = (1 << 15),
-		eRegistrationRequest_multipleCalls = (1 << 14),
-		eRegistrationRequest_supportedH248Packages = (1 << 13),
-		eRegistrationRequest_callCreditCapability = (1 << 12),
-		eRegistrationRequest_capacityReportingCapability = (1 << 11),
-		eRegistrationRequest_capacity = (1 << 10),
-		eRegistrationRequest_featureSet = (1 << 9),
-		eRegistrationRequest_genericData = (1 << 8),
-	} options;
-	RegistrationRequest_callSignalAddress callSignalAddress;
-	RegistrationRequest_rasAddress rasAddress;
-	unsigned timeToLive;
-} RegistrationRequest;
-
-typedef struct RegistrationConfirm_callSignalAddress {	/* SEQUENCE OF */
-	int count;
-	TransportAddress item[10];
-} RegistrationConfirm_callSignalAddress;
-
-typedef struct RegistrationConfirm {	/* SEQUENCE */
-	enum {
-		eRegistrationConfirm_nonStandardData = (1 << 31),
-		eRegistrationConfirm_terminalAlias = (1 << 30),
-		eRegistrationConfirm_gatekeeperIdentifier = (1 << 29),
-		eRegistrationConfirm_alternateGatekeeper = (1 << 28),
-		eRegistrationConfirm_timeToLive = (1 << 27),
-		eRegistrationConfirm_tokens = (1 << 26),
-		eRegistrationConfirm_cryptoTokens = (1 << 25),
-		eRegistrationConfirm_integrityCheckValue = (1 << 24),
-		eRegistrationConfirm_willRespondToIRR = (1 << 23),
-		eRegistrationConfirm_preGrantedARQ = (1 << 22),
-		eRegistrationConfirm_maintainConnection = (1 << 21),
-		eRegistrationConfirm_serviceControl = (1 << 20),
-		eRegistrationConfirm_supportsAdditiveRegistration = (1 << 19),
-		eRegistrationConfirm_terminalAliasPattern = (1 << 18),
-		eRegistrationConfirm_supportedPrefixes = (1 << 17),
-		eRegistrationConfirm_usageSpec = (1 << 16),
-		eRegistrationConfirm_featureServerAlias = (1 << 15),
-		eRegistrationConfirm_capacityReportingSpec = (1 << 14),
-		eRegistrationConfirm_featureSet = (1 << 13),
-		eRegistrationConfirm_genericData = (1 << 12),
-	} options;
-	RegistrationConfirm_callSignalAddress callSignalAddress;
-	unsigned timeToLive;
-} RegistrationConfirm;
-
-typedef struct UnregistrationRequest_callSignalAddress {	/* SEQUENCE OF */
-	int count;
-	TransportAddress item[10];
-} UnregistrationRequest_callSignalAddress;
-
-typedef struct UnregistrationRequest {	/* SEQUENCE */
-	enum {
-		eUnregistrationRequest_endpointAlias = (1 << 31),
-		eUnregistrationRequest_nonStandardData = (1 << 30),
-		eUnregistrationRequest_endpointIdentifier = (1 << 29),
-		eUnregistrationRequest_alternateEndpoints = (1 << 28),
-		eUnregistrationRequest_gatekeeperIdentifier = (1 << 27),
-		eUnregistrationRequest_tokens = (1 << 26),
-		eUnregistrationRequest_cryptoTokens = (1 << 25),
-		eUnregistrationRequest_integrityCheckValue = (1 << 24),
-		eUnregistrationRequest_reason = (1 << 23),
-		eUnregistrationRequest_endpointAliasPattern = (1 << 22),
-		eUnregistrationRequest_supportedPrefixes = (1 << 21),
-		eUnregistrationRequest_alternateGatekeeper = (1 << 20),
-		eUnregistrationRequest_genericData = (1 << 19),
-	} options;
-	UnregistrationRequest_callSignalAddress callSignalAddress;
-} UnregistrationRequest;
-
-typedef struct AdmissionRequest {	/* SEQUENCE */
-	enum {
-		eAdmissionRequest_callModel = (1 << 31),
-		eAdmissionRequest_destinationInfo = (1 << 30),
-		eAdmissionRequest_destCallSignalAddress = (1 << 29),
-		eAdmissionRequest_destExtraCallInfo = (1 << 28),
-		eAdmissionRequest_srcCallSignalAddress = (1 << 27),
-		eAdmissionRequest_nonStandardData = (1 << 26),
-		eAdmissionRequest_callServices = (1 << 25),
-		eAdmissionRequest_canMapAlias = (1 << 24),
-		eAdmissionRequest_callIdentifier = (1 << 23),
-		eAdmissionRequest_srcAlternatives = (1 << 22),
-		eAdmissionRequest_destAlternatives = (1 << 21),
-		eAdmissionRequest_gatekeeperIdentifier = (1 << 20),
-		eAdmissionRequest_tokens = (1 << 19),
-		eAdmissionRequest_cryptoTokens = (1 << 18),
-		eAdmissionRequest_integrityCheckValue = (1 << 17),
-		eAdmissionRequest_transportQOS = (1 << 16),
-		eAdmissionRequest_willSupplyUUIEs = (1 << 15),
-		eAdmissionRequest_callLinkage = (1 << 14),
-		eAdmissionRequest_gatewayDataRate = (1 << 13),
-		eAdmissionRequest_capacity = (1 << 12),
-		eAdmissionRequest_circuitInfo = (1 << 11),
-		eAdmissionRequest_desiredProtocols = (1 << 10),
-		eAdmissionRequest_desiredTunnelledProtocol = (1 << 9),
-		eAdmissionRequest_featureSet = (1 << 8),
-		eAdmissionRequest_genericData = (1 << 7),
-	} options;
-	TransportAddress destCallSignalAddress;
-	TransportAddress srcCallSignalAddress;
-} AdmissionRequest;
-
-typedef struct AdmissionConfirm {	/* SEQUENCE */
-	enum {
-		eAdmissionConfirm_irrFrequency = (1 << 31),
-		eAdmissionConfirm_nonStandardData = (1 << 30),
-		eAdmissionConfirm_destinationInfo = (1 << 29),
-		eAdmissionConfirm_destExtraCallInfo = (1 << 28),
-		eAdmissionConfirm_destinationType = (1 << 27),
-		eAdmissionConfirm_remoteExtensionAddress = (1 << 26),
-		eAdmissionConfirm_alternateEndpoints = (1 << 25),
-		eAdmissionConfirm_tokens = (1 << 24),
-		eAdmissionConfirm_cryptoTokens = (1 << 23),
-		eAdmissionConfirm_integrityCheckValue = (1 << 22),
-		eAdmissionConfirm_transportQOS = (1 << 21),
-		eAdmissionConfirm_willRespondToIRR = (1 << 20),
-		eAdmissionConfirm_uuiesRequested = (1 << 19),
-		eAdmissionConfirm_language = (1 << 18),
-		eAdmissionConfirm_alternateTransportAddresses = (1 << 17),
-		eAdmissionConfirm_useSpecifiedTransport = (1 << 16),
-		eAdmissionConfirm_circuitInfo = (1 << 15),
-		eAdmissionConfirm_usageSpec = (1 << 14),
-		eAdmissionConfirm_supportedProtocols = (1 << 13),
-		eAdmissionConfirm_serviceControl = (1 << 12),
-		eAdmissionConfirm_multipleCalls = (1 << 11),
-		eAdmissionConfirm_featureSet = (1 << 10),
-		eAdmissionConfirm_genericData = (1 << 9),
-	} options;
-	TransportAddress destCallSignalAddress;
-} AdmissionConfirm;
-
-typedef struct LocationRequest {	/* SEQUENCE */
-	enum {
-		eLocationRequest_endpointIdentifier = (1 << 31),
-		eLocationRequest_nonStandardData = (1 << 30),
-		eLocationRequest_sourceInfo = (1 << 29),
-		eLocationRequest_canMapAlias = (1 << 28),
-		eLocationRequest_gatekeeperIdentifier = (1 << 27),
-		eLocationRequest_tokens = (1 << 26),
-		eLocationRequest_cryptoTokens = (1 << 25),
-		eLocationRequest_integrityCheckValue = (1 << 24),
-		eLocationRequest_desiredProtocols = (1 << 23),
-		eLocationRequest_desiredTunnelledProtocol = (1 << 22),
-		eLocationRequest_featureSet = (1 << 21),
-		eLocationRequest_genericData = (1 << 20),
-		eLocationRequest_hopCount = (1 << 19),
-		eLocationRequest_circuitInfo = (1 << 18),
-	} options;
-	TransportAddress replyAddress;
-} LocationRequest;
-
-typedef struct LocationConfirm {	/* SEQUENCE */
-	enum {
-		eLocationConfirm_nonStandardData = (1 << 31),
-		eLocationConfirm_destinationInfo = (1 << 30),
-		eLocationConfirm_destExtraCallInfo = (1 << 29),
-		eLocationConfirm_destinationType = (1 << 28),
-		eLocationConfirm_remoteExtensionAddress = (1 << 27),
-		eLocationConfirm_alternateEndpoints = (1 << 26),
-		eLocationConfirm_tokens = (1 << 25),
-		eLocationConfirm_cryptoTokens = (1 << 24),
-		eLocationConfirm_integrityCheckValue = (1 << 23),
-		eLocationConfirm_alternateTransportAddresses = (1 << 22),
-		eLocationConfirm_supportedProtocols = (1 << 21),
-		eLocationConfirm_multipleCalls = (1 << 20),
-		eLocationConfirm_featureSet = (1 << 19),
-		eLocationConfirm_genericData = (1 << 18),
-		eLocationConfirm_circuitInfo = (1 << 17),
-		eLocationConfirm_serviceControl = (1 << 16),
-	} options;
-	TransportAddress callSignalAddress;
-	TransportAddress rasAddress;
-} LocationConfirm;
-
-typedef struct InfoRequestResponse_callSignalAddress {	/* SEQUENCE OF */
-	int count;
-	TransportAddress item[10];
-} InfoRequestResponse_callSignalAddress;
-
-typedef struct InfoRequestResponse {	/* SEQUENCE */
-	enum {
-		eInfoRequestResponse_nonStandardData = (1 << 31),
-		eInfoRequestResponse_endpointAlias = (1 << 30),
-		eInfoRequestResponse_perCallInfo = (1 << 29),
-		eInfoRequestResponse_tokens = (1 << 28),
-		eInfoRequestResponse_cryptoTokens = (1 << 27),
-		eInfoRequestResponse_integrityCheckValue = (1 << 26),
-		eInfoRequestResponse_needResponse = (1 << 25),
-		eInfoRequestResponse_capacity = (1 << 24),
-		eInfoRequestResponse_irrStatus = (1 << 23),
-		eInfoRequestResponse_unsolicited = (1 << 22),
-		eInfoRequestResponse_genericData = (1 << 21),
-	} options;
-	TransportAddress rasAddress;
-	InfoRequestResponse_callSignalAddress callSignalAddress;
-} InfoRequestResponse;
-
-typedef struct RasMessage {	/* CHOICE */
-	enum {
-		eRasMessage_gatekeeperRequest,
-		eRasMessage_gatekeeperConfirm,
-		eRasMessage_gatekeeperReject,
-		eRasMessage_registrationRequest,
-		eRasMessage_registrationConfirm,
-		eRasMessage_registrationReject,
-		eRasMessage_unregistrationRequest,
-		eRasMessage_unregistrationConfirm,
-		eRasMessage_unregistrationReject,
-		eRasMessage_admissionRequest,
-		eRasMessage_admissionConfirm,
-		eRasMessage_admissionReject,
-		eRasMessage_bandwidthRequest,
-		eRasMessage_bandwidthConfirm,
-		eRasMessage_bandwidthReject,
-		eRasMessage_disengageRequest,
-		eRasMessage_disengageConfirm,
-		eRasMessage_disengageReject,
-		eRasMessage_locationRequest,
-		eRasMessage_locationConfirm,
-		eRasMessage_locationReject,
-		eRasMessage_infoRequest,
-		eRasMessage_infoRequestResponse,
-		eRasMessage_nonStandardMessage,
-		eRasMessage_unknownMessageResponse,
-		eRasMessage_requestInProgress,
-		eRasMessage_resourcesAvailableIndicate,
-		eRasMessage_resourcesAvailableConfirm,
-		eRasMessage_infoRequestAck,
-		eRasMessage_infoRequestNak,
-		eRasMessage_serviceControlIndication,
-		eRasMessage_serviceControlResponse,
-	} choice;
-	union {
-		GatekeeperRequest gatekeeperRequest;
-		GatekeeperConfirm gatekeeperConfirm;
-		RegistrationRequest registrationRequest;
-		RegistrationConfirm registrationConfirm;
-		UnregistrationRequest unregistrationRequest;
-		AdmissionRequest admissionRequest;
-		AdmissionConfirm admissionConfirm;
-		LocationRequest locationRequest;
-		LocationConfirm locationConfirm;
-		InfoRequestResponse infoRequestResponse;
-	};
-} RasMessage;
diff --git a/net/ipv4/netfilter/ip_nat_helper_h323.c b/net/ipv4/netfilter/ip_nat_helper_h323.c
index a0bc883..6f19c20 100644
--- a/net/ipv4/netfilter/ip_nat_helper_h323.c
+++ b/net/ipv4/netfilter/ip_nat_helper_h323.c
@@ -41,65 +41,12 @@
 #include <linux/netfilter_ipv4/ip_conntrack_h323.h>
 #include <linux/netfilter_ipv4/ip_conntrack_helper.h>
 
-#include "ip_conntrack_helper_h323_asn1.h"
-
 #if 0
 #define DEBUGP printk
 #else
 #define DEBUGP(format, args...)
 #endif
 
-extern int get_h245_addr(unsigned char *data, H245_TransportAddress * addr,
-			 u_int32_t * ip, u_int16_t * port);
-extern int get_h225_addr(unsigned char *data, TransportAddress * addr,
-			 u_int32_t * ip, u_int16_t * port);
-extern void ip_conntrack_h245_expect(struct ip_conntrack *new,
-				     struct ip_conntrack_expect *this);
-extern void ip_conntrack_q931_expect(struct ip_conntrack *new,
-				     struct ip_conntrack_expect *this);
-extern int (*set_h245_addr_hook) (struct sk_buff ** pskb,
-				  unsigned char **data, int dataoff,
-				  H245_TransportAddress * addr,
-				  u_int32_t ip, u_int16_t port);
-extern int (*set_h225_addr_hook) (struct sk_buff ** pskb,
-				  unsigned char **data, int dataoff,
-				  TransportAddress * addr,
-				  u_int32_t ip, u_int16_t port);
-extern int (*set_sig_addr_hook) (struct sk_buff ** pskb,
-				 struct ip_conntrack * ct,
-				 enum ip_conntrack_info ctinfo,
-				 unsigned char **data,
-				 TransportAddress * addr, int count);
-extern int (*set_ras_addr_hook) (struct sk_buff ** pskb,
-				 struct ip_conntrack * ct,
-				 enum ip_conntrack_info ctinfo,
-				 unsigned char **data,
-				 TransportAddress * addr, int count);
-extern int (*nat_rtp_rtcp_hook) (struct sk_buff ** pskb,
-				 struct ip_conntrack * ct,
-				 enum ip_conntrack_info ctinfo,
-				 unsigned char **data, int dataoff,
-				 H245_TransportAddress * addr,
-				 u_int16_t port, u_int16_t rtp_port,
-				 struct ip_conntrack_expect * rtp_exp,
-				 struct ip_conntrack_expect * rtcp_exp);
-extern int (*nat_t120_hook) (struct sk_buff ** pskb, struct ip_conntrack * ct,
-			     enum ip_conntrack_info ctinfo,
-			     unsigned char **data, int dataoff,
-			     H245_TransportAddress * addr, u_int16_t port,
-			     struct ip_conntrack_expect * exp);
-extern int (*nat_h245_hook) (struct sk_buff ** pskb, struct ip_conntrack * ct,
-			     enum ip_conntrack_info ctinfo,
-			     unsigned char **data, int dataoff,
-			     TransportAddress * addr, u_int16_t port,
-			     struct ip_conntrack_expect * exp);
-extern int (*nat_q931_hook) (struct sk_buff ** pskb, struct ip_conntrack * ct,
-			     enum ip_conntrack_info ctinfo,
-			     unsigned char **data, TransportAddress * addr,
-			     int idx, u_int16_t port,
-			     struct ip_conntrack_expect * exp);
-
-
 /****************************************************************************/
 static int set_addr(struct sk_buff **pskb,
 		    unsigned char **data, int dataoff,

^ permalink raw reply related


This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.