* Re: [PATCH] ipt_REJECT shouldn't send replies for wrong udp csum
From: David S. Miller @ 2003-01-10 8:52 UTC (permalink / raw)
To: laforge; +Cc: netfilter-devel
In-Reply-To: <20030109144641.GI9467@sunbeam.de.gnumonks.org>
From: Harald Welte <laforge@gnumonks.org>
Date: Thu, 9 Jan 2003 15:46:41 +0100
Author: Patrick McHardy <kaber@trash.net>
ipt_REJECT sends unreachables in response to UDP packets with invalid
checksums, thereby exposing the existance of a firewall (as described
in phrack #60, "broken crc firewall spotting" (or something like this),
www.phrack.com). The patch makes ipt_REJECT verify UDP checksums if
set.
Applied, thanks.
^ permalink raw reply
* Re: ISO-9660 Rock Ridge gives different links different inums
From: Denis Vlasenko @ 2003-01-10 8:54 UTC (permalink / raw)
To: Peter Chubb; +Cc: Peter Chubb, Andrew McGregor, eric, linux-kernel
In-Reply-To: <15902.35492.536040.298566@wombat.chubb.wattle.id.au>
On 10 January 2003 10:56, Peter Chubb wrote:
> >>>>> "Denis" == Denis Vlasenko <vda@port.imtp.ilyichevsk.odessa.ua>
> >>>>> writes:
>
> Denis> On 10 January 2003 05:34, Peter Chubb wrote:
> >> Preferably, all the inumbers for the same file would point to the
> >> same directory entry; but I can see no easy way to do that.
> >> Keeping an in-memory table for files with multiple links might be
> >> the best way, as there aren't that many on a typical filesystem.
>
> Denis> And what will happen on a non-typical filesystem with 1
> million Denis> hardlinks?
>
> Denis> The root of the problem is a fundamental layering violation in
> Denis> traditional Unix filesystems: inode numbers should NOT be
> Denis> visible to userspace. Userspace just needs a way to tell
> Denis> hardlinks from separate files, that's all. Exposing inumbers
> Denis> does that, but creates tons of problems for filesystems which
> Denis> do NOT have such a concept.
>
> The problem is that in Unix the fundamental identity of a file is
> the tuple (blkdev, inum); names are merely indices (links) that
> resolve to that tuple.
You are right. It is designed this way. This design is wrong.
> Personally, I'd swap to a pair of system
> calls to map name to (blkdev, inum), and open(blkdev, inum). Think
> of the inode number as a unique within-filesystem index.
This does not fix the design.
--
vda
^ permalink raw reply
* Re: [PATCH] ipt_REJECT shouldn't send replies for wrong udp csum
From: David S. Miller @ 2003-01-10 8:55 UTC (permalink / raw)
To: laforge; +Cc: netfilter-devel
In-Reply-To: <20030109144750.GJ9467@sunbeam.de.gnumonks.org>
From: Harald Welte <laforge@gnumonks.org>
Date: Thu, 9 Jan 2003 15:47:50 +0100
Please apply to 2.4.x and 2.5.x, thanks.
Author: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
As 2.4.20 came out with newnat included, there were several reports on
excessive logging of reused FTP expectations.
Applied, but watch those subject lines :-)
^ permalink raw reply
* Some 2.5.55 compile problems
From: Joshua M. Kwan @ 2003-01-10 9:01 UTC (permalink / raw)
To: davem; +Cc: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 727 bytes --]
Hi Dave: (hope i'm addressing this issue to the right person!)
When making bzImage with the current BK I receive the following during
the final link process:
net/built-in.o(.text+0x4ba22): In function `xfrm_probe_algs':
: undefined reference to `crypto_alg_available'
net/built-in.o(.text+0x4ba68): In function `xfrm_probe_algs':
: undefined reference to `crypto_alg_available'
this is because ipv4 seems to depend on some Cryptographic API stuff...
that doesn't sound right though! Anyway, I added base Cryptographic API
support to shut it up, and the link went fine.
But this was definitely not added until recently - I was able to
compile all 2.5.54 BK cleanly. What's the deal now?
Regards
Josh
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply
* Re: [PATCH] ECN target wrong tcp csum on little endian
From: David S. Miller @ 2003-01-10 8:57 UTC (permalink / raw)
To: laforge; +Cc: netfilter-devel
In-Reply-To: <20030109145046.GK9467@sunbeam.de.gnumonks.org>
From: Harald Welte <laforge@gnumonks.org>
Date: Thu, 9 Jan 2003 15:50:46 +0100
Author: Patrick McHardy <kaber@trash.net>
The 2.4.20 kernel included the new iptables 'ECN' target, enabling a selective
ECN disable mechanism. Unfortunately there was a bug in the incremental TCP
checksum update, resulting in broken TCP checksums on little endian machines.
This patch fixes the Bug.
Applied, thanks.
^ permalink raw reply
* Re: 2.4.20 stability issues
From: Russell Coker @ 2003-01-10 8:57 UTC (permalink / raw)
To: Brian May, selinux
In-Reply-To: <20030110002718.GA922@snoopy.apana.org.au>
On Fri, 10 Jan 2003 01:27, Brian May wrote:
> It only happens after an uptime of several hours (if not days; it
> also depends if you count time in suspend mode or not), on my laptop
> computer.
rjc@lyta:/tmp$ uname -a
Linux lyta 2.4.20-se-r #1 Mon Dec 16 19:48:46 CET 2002 i686 unknown unknown
GNU/Linux
rjc@lyta:/tmp$ uptime
09:52:14 up 4 days, 9:11, 1 user, load average: 0.88, 1.33, 0.90
rjc@lyta:/tmp$
I have included a ReiserFS patch for performance that probably does not impact
this.
Let me know if you'd like a copy of the kernel deb that I use for testing and
I'll scp it to snoopy. I don't use FreeSWAN and I have it compiled to
auto-mount devfs, but apart from that it should work for you (it's the same
configuration we use for ns).
> I had no problems with 2.4.19, but as of 2.4.20 I seem to have
> encountered some weird stability issues that I cannot put my finger on.
[]
> So far this has only ever happened with 2.4.19, not 2.4.20. Weird.
???
--
http://www.coker.com.au/selinux/ My NSA Security Enhanced Linux packages
http://www.coker.com.au/bonnie++/ Bonnie++ hard drive benchmark
http://www.coker.com.au/postal/ Postal SMTP/POP benchmark
http://www.coker.com.au/~russell/ My home page
--
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
* Re: [PATCH] ip_conntrack_ftp.c: cosmetic typo fix in debug macro
From: David S. Miller @ 2003-01-10 8:58 UTC (permalink / raw)
To: laforge; +Cc: netfilter-devel
In-Reply-To: <20030109145154.GL9467@sunbeam.de.gnumonks.org>
From: Harald Welte <laforge@gnumonks.org>
Date: Thu, 9 Jan 2003 15:51:54 +0100
Author: Filip Sneppe (Cronos)" <filip.sneppe@cronos.be>
Cosmetic Fix:
Fixes a typo in a DEBUG statement (which is contained in an "#if 0" block,
so this would never end up causing a problem).
Applied, thanks.
^ permalink raw reply
* unscribe
From: ?? @ 2003-01-10 9:00 UTC (permalink / raw)
To: netfilter-devel
In-Reply-To: <20030110.004226.89265652.davem@redhat.com>
unscribe
^ permalink raw reply
* Re: NAPI and tg3
From: David S. Miller @ 2003-01-10 9:00 UTC (permalink / raw)
To: Robert.Olsson; +Cc: sp, alan, jgarzik, linux-kernel
In-Reply-To: <15901.44924.430586.886@robur.slu.se>
From: Robert Olsson <Robert.Olsson@data.slu.se>
Date: Thu, 9 Jan 2003 18:21:00 +0100
Before it's get forgotten...
Applied, thanks.
^ permalink raw reply
* Re: [PATCH] Prevent .gnu.linkonce.this_module section from being merged with other sections
From: Rusty Russell @ 2003-01-10 8:32 UTC (permalink / raw)
To: Miles Bader; +Cc: linux-kernel
In-Reply-To: <20030109094923.63723374A@mcspd15.ucom.lsi.nec.co.jp>
In message <20030109094923.63723374A@mcspd15.ucom.lsi.nec.co.jp> you write:
> --- linux-2.5.55-moo.orig/Makefile 2003-01-09 14:03:45.000000000 +0900
> +++ linux-2.5.55-moo/Makefile 2003-01-09 14:07:36.000000000 +0900
> @@ -163,7 +164,7 @@
> MODFLAGS = -DMODULE
> CFLAGS_MODULE = $(MODFLAGS)
> AFLAGS_MODULE = $(MODFLAGS)
> -LDFLAGS_MODULE = -r
> +LDFLAGS_MODULE = -r --unique=.gnu.linkonce.this_module
No! Does this not work?
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/v850/Makefile working-2.5.55-strlen/arch/v850/Makefile
--- linux-2.5.55/arch/v850/Makefile 2003-01-02 12:46:15.000000000 +1100
+++ working-2.5.55-strlen/arch/v850/Makefile 2003-01-10 19:32:09.000000000 +1100
@@ -24,7 +24,7 @@ CFLAGS += -D__linux__ -DUTS_SYSNAME=\"uC
LDFLAGS_BLOB := -b binary --oformat elf32-little
OBJCOPY_FLAGS_BLOB := -I binary -O elf32-little -B v850e
-
+LDFLAGS_MODULE += --unique=.gnu.linkonce.this_module
HEAD := $(arch_dir)/kernel/head.o $(arch_dir)/kernel/init_task.o
core-y += $(arch_dir)/kernel/
Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
^ permalink raw reply
* Re: [BUG][2.5] System crash with PCI drivers that handle the same devices
From: Rusty Russell @ 2003-01-10 8:23 UTC (permalink / raw)
To: Michael Hunold; +Cc: linux-kernel, jgarzik
In-Reply-To: <3E1C5E86.9050700@gmx.de>
In message <3E1C5E86.9050700@gmx.de> you write:
> Hello Rusty and others,
I'm not sure why I'm in here...
Have you tried doung both these builtin?
Your drivers also have the same name, which is odd, at least. Also,
you should use SET_MODULE_OWNER or set .owner = THIS_MODULE.
Jeff prefers SET_MODULE_OWNER, but I never figured out why.
Sorry I can't be of more help,
Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
^ permalink raw reply
* Re: exception tables in 2.5.55
From: Rusty Russell @ 2003-01-10 8:30 UTC (permalink / raw)
To: Miles Bader; +Cc: linux-kernel, Greg Ungerer, David McCullough, torvalds
In-Reply-To: <buo1y3msv2e.fsf@mcspd15.ucom.lsi.nec.co.jp>
In message <buo1y3msv2e.fsf@mcspd15.ucom.lsi.nec.co.jp> you write:
> I'm building for the v850, which has no MMU.
>
> Starting with 2.5.55, I'm getting link errors like:
>
> kernel/extable.c:29: undefined reference to `search_extable'
>
> I didn't have to worry about this with earlier kernels, and it looks
> like what happened is that previously arch-specific code was
> consolidated into the generic kernel.
Yes. This patch (like most of the module stuff) was written long
before the mmuless archs were merged. It didn't occur to me to look
through all the archs again.
> As far as I can see, the purpose of exception tables is to deal with
> unexpected memory access traps and on the v850, this basically can't
> happen (there's no MMU, and no way I know of to detect non-existant
> memory). So I'd like to make the generic exception handling stuff
> optional.
You can now make kernel/extable.o depend on this configuration option
(whatever you decide it should be).
And surround kernel/module.c's search_module_extables with the same
option.
It's trivial, just CC: me when you send to Linus, and I'll re-xmit if
he drops it.
> However, I'm not sure the best way to do this -- I could try to make it
> dependent on CONFIG_MMU, but are there non-MMU processors that _can_
> usefully use exception tables (in which case perhaps there should just
> be a separate CONFIG_EXTABLES or something)?
>
> [Oh, and also, please tell me if I'm mistaken about the purpose of
> these tables and really _should_ just implement them.]
No, they're for copy_to/from_user and friends. If your arch doesn't
rely on exception handling to trap wierd accesses, you can turn this
off.
Hope that helps,
Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
^ permalink raw reply
* Re: [PATCH] Make `obsolete params' work correctly if MODULE_SYMBOL_PREFIX is non-empty
From: Rusty Russell @ 2003-01-10 8:31 UTC (permalink / raw)
To: Miles Bader; +Cc: linux-kernel
In-Reply-To: <20030109094923.46A933745@mcspd15.ucom.lsi.nec.co.jp>
In message <20030109094923.46A933745@mcspd15.ucom.lsi.nec.co.jp> you write:
> Since these are just symbols in the module object, they need symbol name
> munging to find the symbol from the parameter name.
I've got this one already pending (I managed to pick up mail once
while travelling to a funeral, but generally I've been offline for 4
days).
Thanks!
Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
^ permalink raw reply
* Re: __gpl_ksymtab
From: Rusty Russell @ 2003-01-10 8:54 UTC (permalink / raw)
To: Russell King; +Cc: Linux Kernel List, torvalds
In-Reply-To: <20030109112659.B15310@flint.arm.linux.org.uk>
In message <20030109112659.B15310@flint.arm.linux.org.uk> you write:
> In 2.5.55, we have a new section called "__gpl_ksymtab".
>
> This, unfortunately, isn't mentioned in the linker script, and on ARM
> gets placed at 0x1c58, where the rest of the kernel is at 0xcXXXXXXX.
>
> This section isn't even mentioned in the x86 linker script, so there
> isn't an example of the placement expectations of this section.
Exactly the same as __ksymtab.
> Rusty, can you provide the missing bits please?
Sure, I discarded it from the patch, when I discovered that the linker
creates the __start_ and __stop_ symbols automagically (as long as
it's not empty, which this never is).
But for clarity, and for section placement, here are all the archs,
consistent with whatever style the rest of the file is in
Linus, please apply,
Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/alpha/vmlinux.lds.S working-2.5.55-gpl_ksymtab/arch/alpha/vmlinux.lds.S
--- linux-2.5.55/arch/alpha/vmlinux.lds.S 2003-01-02 12:46:56.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/alpha/vmlinux.lds.S 2003-01-10 19:47:08.000000000 +1100
@@ -32,6 +32,13 @@ SECTIONS
__stop___ksymtab = .;
}
+ /* Kernel symbol table: GPL only */
+ __gpl_ksymtab ALIGN(8) : {
+ __start___gpl_ksymtab = .;
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+ }
+
/* All kernel symbols */
__kallsyms ALIGN(8) : {
__start___kallsyms = .;
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/arm/vmlinux-armo.lds.in working-2.5.55-gpl_ksymtab/arch/arm/vmlinux-armo.lds.in
--- linux-2.5.55/arch/arm/vmlinux-armo.lds.in 2003-01-02 12:32:55.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/arm/vmlinux-armo.lds.in 2003-01-10 19:45:52.000000000 +1100
@@ -78,6 +78,12 @@ SECTIONS
__stop___ksymtab = .;
}
+ __gpl_ksymtab : { /* Kernel symbol table: GPL-only */
+ __start___gpl_ksymtab = .;
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+ }
+
.data : {
/*
* The cacheline aligned data
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/arm/vmlinux-armv.lds.in working-2.5.55-gpl_ksymtab/arch/arm/vmlinux-armv.lds.in
--- linux-2.5.55/arch/arm/vmlinux-armv.lds.in 2003-01-10 10:55:40.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/arm/vmlinux-armv.lds.in 2003-01-10 19:46:39.000000000 +1100
@@ -81,6 +81,12 @@ SECTIONS
__stop___ksymtab = .;
}
+ __gpl_ksymtab : { /* Kernel symbol table: GPL-only*/
+ __start___gpl_ksymtab = .;
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+ }
+
__kallsyms : { /* All kernel symbols */
__start___kallsyms = .;
*(__kallsyms)
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/cris/vmlinux.lds.S working-2.5.55-gpl_ksymtab/arch/cris/vmlinux.lds.S
--- linux-2.5.55/arch/cris/vmlinux.lds.S 2003-01-02 12:27:11.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/cris/vmlinux.lds.S 2003-01-10 19:45:16.000000000 +1100
@@ -43,6 +43,10 @@ SECTIONS
__ksymtab : { *(__ksymtab) }
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ __gpl_ksymtab : { *(__gpl_ksymtab) }
+ __stop___gpl_ksymtab = .;
+
. = ALIGN (4);
___data_start = . ;
__Sdata = . ;
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/i386/vmlinux.lds.S working-2.5.55-gpl_ksymtab/arch/i386/vmlinux.lds.S
--- linux-2.5.55/arch/i386/vmlinux.lds.S 2003-01-02 12:46:12.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/i386/vmlinux.lds.S 2003-01-10 19:44:51.000000000 +1100
@@ -31,6 +31,10 @@ SECTIONS
__ksymtab : { *(__ksymtab) }
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only symbols */
+ __gpl_ksymtab : { *(__gpl_ksymtab) }
+ __stop___gpl_ksymtab = .;
+
__start___kallsyms = .; /* All kernel symbols */
__kallsyms : { *(__kallsyms) }
__stop___kallsyms = .;
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/ia64/vmlinux.lds.S working-2.5.55-gpl_ksymtab/arch/ia64/vmlinux.lds.S
--- linux-2.5.55/arch/ia64/vmlinux.lds.S 2003-01-02 12:46:59.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/ia64/vmlinux.lds.S 2003-01-10 19:44:26.000000000 +1100
@@ -65,6 +65,11 @@ SECTIONS
{ *(__ksymtab) }
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL only */
+ __gpl_ksymtab : AT(ADDR(__gpl_ksymtab) - PAGE_OFFSET)
+ { *(__gpl_ksymtab) }
+ __stop___gpl_ksymtab = .;
+
__kallsyms : AT(ADDR(__kallsyms) - PAGE_OFFSET)
{
__start___kallsyms = .; /* All kernel symbols */
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68k/vmlinux-std.lds working-2.5.55-gpl_ksymtab/arch/m68k/vmlinux-std.lds
--- linux-2.5.55/arch/m68k/vmlinux-std.lds 2003-01-02 14:47:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68k/vmlinux-std.lds 2003-01-10 19:43:03.000000000 +1100
@@ -24,6 +24,10 @@ SECTIONS
__ksymtab : { *(__ksymtab) }
__stop___ksymtab = .;
+ __start___ksymtab = .; /* Kernel symbol table */
+ __ksymtab : { *(__ksymtab) }
+ __stop___ksymtab = .;
+
_etext = .; /* End of text section */
.data : { /* Data */
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68k/vmlinux-sun3.lds working-2.5.55-gpl_ksymtab/arch/m68k/vmlinux-sun3.lds
--- linux-2.5.55/arch/m68k/vmlinux-sun3.lds 2003-01-02 14:47:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68k/vmlinux-sun3.lds 2003-01-10 19:43:53.000000000 +1100
@@ -30,6 +30,9 @@ SECTIONS
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ __gpl_ksymtab : { *(__gpl_ksymtab) }
+ __stop___gpl_ksymtab = .;
}
/* End of data goes *here* so that freeing init code works properly. */
_edata = .;
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/5206/ARNEWSH/ram.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5206/ARNEWSH/ram.ld
--- linux-2.5.55/arch/m68knommu/platform/5206/ARNEWSH/ram.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5206/ARNEWSH/ram.ld 2003-01-10 19:51:20.000000000 +1100
@@ -24,6 +24,11 @@ SECTIONS {
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
+
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
. = ALIGN(4) ;
_etext = . ;
} > ram
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/5206e/MOTOROLA/ram.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5206e/MOTOROLA/ram.ld
--- linux-2.5.55/arch/m68knommu/platform/5206e/MOTOROLA/ram.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5206e/MOTOROLA/ram.ld 2003-01-10 19:51:13.000000000 +1100
@@ -24,6 +24,11 @@ SECTIONS {
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
+
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
. = ALIGN(4) ;
_etext = . ;
} > ram
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/5206e/eLITE/ram.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5206e/eLITE/ram.ld
--- linux-2.5.55/arch/m68knommu/platform/5206e/eLITE/ram.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5206e/eLITE/ram.ld 2003-01-10 19:51:09.000000000 +1100
@@ -24,6 +24,11 @@ SECTIONS {
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
+
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
. = ALIGN(4) ;
_etext = . ;
} > ram
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/5249/MOTOROLA/ram.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5249/MOTOROLA/ram.ld
--- linux-2.5.55/arch/m68knommu/platform/5249/MOTOROLA/ram.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5249/MOTOROLA/ram.ld 2003-01-10 19:51:04.000000000 +1100
@@ -25,6 +25,11 @@ SECTIONS {
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
+
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
. = ALIGN(4) ;
_etext = . ;
} > ram
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/5272/MOTOROLA/ram.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5272/MOTOROLA/ram.ld
--- linux-2.5.55/arch/m68knommu/platform/5272/MOTOROLA/ram.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5272/MOTOROLA/ram.ld 2003-01-10 19:50:59.000000000 +1100
@@ -25,6 +25,11 @@ SECTIONS {
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
+
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
. = ALIGN(4) ;
_etext = . ;
} > ram
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/5272/NETtel/ram.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5272/NETtel/ram.ld
--- linux-2.5.55/arch/m68knommu/platform/5272/NETtel/ram.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5272/NETtel/ram.ld 2003-01-10 19:50:55.000000000 +1100
@@ -25,6 +25,11 @@ SECTIONS {
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
+
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
. = ALIGN(4) ;
_etext = . ;
} > ram
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/5307/ARNEWSH/ram.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5307/ARNEWSH/ram.ld
--- linux-2.5.55/arch/m68knommu/platform/5307/ARNEWSH/ram.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5307/ARNEWSH/ram.ld 2003-01-10 19:50:51.000000000 +1100
@@ -24,6 +24,11 @@ SECTIONS {
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
+
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
. = ALIGN(4) ;
_etext = . ;
} > ram
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/5307/CLEOPATRA/ram.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5307/CLEOPATRA/ram.ld
--- linux-2.5.55/arch/m68knommu/platform/5307/CLEOPATRA/ram.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5307/CLEOPATRA/ram.ld 2003-01-10 19:50:46.000000000 +1100
@@ -24,6 +24,11 @@ SECTIONS {
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
+
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
. = ALIGN(4) ;
_etext = . ;
} > ram
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/5307/MOTOROLA/ram.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5307/MOTOROLA/ram.ld
--- linux-2.5.55/arch/m68knommu/platform/5307/MOTOROLA/ram.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5307/MOTOROLA/ram.ld 2003-01-10 19:50:42.000000000 +1100
@@ -24,6 +24,11 @@ SECTIONS {
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
+
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
. = ALIGN(4) ;
_etext = . ;
} > ram
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/5307/MP3/ram.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5307/MP3/ram.ld
--- linux-2.5.55/arch/m68knommu/platform/5307/MP3/ram.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5307/MP3/ram.ld 2003-01-10 19:50:36.000000000 +1100
@@ -24,6 +24,11 @@ SECTIONS {
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
+
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
. = ALIGN(4) ;
_etext = . ;
} > ram
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/5307/NETtel/ram.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5307/NETtel/ram.ld
--- linux-2.5.55/arch/m68knommu/platform/5307/NETtel/ram.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5307/NETtel/ram.ld 2003-01-10 19:50:30.000000000 +1100
@@ -24,6 +24,11 @@ SECTIONS {
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
+
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
. = ALIGN(4) ;
_etext = . ;
} > ram
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/5407/CLEOPATRA/ram.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5407/CLEOPATRA/ram.ld
--- linux-2.5.55/arch/m68knommu/platform/5407/CLEOPATRA/ram.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5407/CLEOPATRA/ram.ld 2003-01-10 19:50:23.000000000 +1100
@@ -24,6 +24,11 @@ SECTIONS {
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
+
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
. = ALIGN(4) ;
_etext = . ;
} > ram
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/5407/MOTOROLA/ram.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5407/MOTOROLA/ram.ld
--- linux-2.5.55/arch/m68knommu/platform/5407/MOTOROLA/ram.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/5407/MOTOROLA/ram.ld 2003-01-10 19:50:06.000000000 +1100
@@ -24,6 +24,11 @@ SECTIONS {
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
+
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
. = ALIGN(4) ;
_etext = . ;
} > ram
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/68360/uCquicc/ram.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/68360/uCquicc/ram.ld
--- linux-2.5.55/arch/m68knommu/platform/68360/uCquicc/ram.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/68360/uCquicc/ram.ld 2003-01-10 19:49:26.000000000 +1100
@@ -38,6 +38,9 @@ SECTIONS
__start___ksymtab = . ;
*(__ksymtab)
__stop___ksymtab = . ;
+ __start___gpl_ksymtab = . ;
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = . ;
__start___ex_table = . ;
*(___ex_table)
__stop___ex_table = . ;
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/68360/uCquicc/rom.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/68360/uCquicc/rom.ld
--- linux-2.5.55/arch/m68knommu/platform/68360/uCquicc/rom.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/68360/uCquicc/rom.ld 2003-01-10 19:49:15.000000000 +1100
@@ -38,6 +38,9 @@ SECTIONS
__start___ksymtab = . ;
*(__ksymtab)
__stop___ksymtab = . ;
+ __start___gpl_ksymtab = . ;
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = . ;
__start___ex_table = . ;
*(___ex_table)
__stop___ex_table = . ;
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/68EZ328/ucsimm/fixed.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/68EZ328/ucsimm/fixed.ld
--- linux-2.5.55/arch/m68knommu/platform/68EZ328/ucsimm/fixed.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/68EZ328/ucsimm/fixed.ld 2003-01-10 19:48:58.000000000 +1100
@@ -30,6 +30,10 @@ SECTIONS
*(__ksymtab)
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
. = ALIGN(0x4) ;
_etext = . ;
__data_rom_start = . ;
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/68EZ328/ucsimm/ram.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/68EZ328/ucsimm/ram.ld
--- linux-2.5.55/arch/m68knommu/platform/68EZ328/ucsimm/ram.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/68EZ328/ucsimm/ram.ld 2003-01-10 19:48:52.000000000 +1100
@@ -51,6 +51,10 @@ SECTIONS
*(__ksymtab)
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
_etext = . ;
__data_rom_start = ALIGN ( 4 ) ;
} > ram
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/68VZ328/de2/fixed.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/68VZ328/de2/fixed.ld
--- linux-2.5.55/arch/m68knommu/platform/68VZ328/de2/fixed.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/68VZ328/de2/fixed.ld 2003-01-10 19:48:45.000000000 +1100
@@ -29,6 +29,10 @@ SECTIONS
*(__ksymtab)
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
. = ALIGN(0x4) ;
_etext = . ;
__data_rom_start = . ;
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/68VZ328/de2/ram.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/68VZ328/de2/ram.ld
--- linux-2.5.55/arch/m68knommu/platform/68VZ328/de2/ram.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/68VZ328/de2/ram.ld 2003-01-10 19:48:39.000000000 +1100
@@ -50,6 +50,10 @@ SECTIONS
*(__ksymtab)
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
_etext = . ;
__data_rom_start = ALIGN ( 4 ) ;
} > ram
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/68VZ328/ucdimm/fixed.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/68VZ328/ucdimm/fixed.ld
--- linux-2.5.55/arch/m68knommu/platform/68VZ328/ucdimm/fixed.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/68VZ328/ucdimm/fixed.ld 2003-01-10 19:48:32.000000000 +1100
@@ -29,6 +29,10 @@ SECTIONS
*(__ksymtab)
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
. = ALIGN(0x4) ;
_etext = . ;
__data_rom_start = . ;
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/m68knommu/platform/68VZ328/ucdimm/ram.ld working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/68VZ328/ucdimm/ram.ld
--- linux-2.5.55/arch/m68knommu/platform/68VZ328/ucdimm/ram.ld 2003-01-02 12:32:57.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/m68knommu/platform/68VZ328/ucdimm/ram.ld 2003-01-10 19:48:21.000000000 +1100
@@ -50,6 +50,10 @@ SECTIONS
*(__ksymtab)
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
+ *(__gpl_ksymtab)
+ __stop___gpl_ksymtab = .;
+
_etext = . ;
__data_rom_start = ALIGN ( 4 ) ;
} > ram
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/mips/vmlinux.lds.S working-2.5.55-gpl_ksymtab/arch/mips/vmlinux.lds.S
--- linux-2.5.55/arch/mips/vmlinux.lds.S 2003-01-02 12:27:11.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/mips/vmlinux.lds.S 2003-01-10 19:42:22.000000000 +1100
@@ -29,6 +29,10 @@ SECTIONS
__ksymtab : { *(__ksymtab) }
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only symbols */
+ __gpl_ksymtab : { *(__gpl_ksymtab) }
+ __stop___gpl_ksymtab = .;
+
_etext = .;
. = ALIGN(8192);
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/parisc/vmlinux.lds.S working-2.5.55-gpl_ksymtab/arch/parisc/vmlinux.lds.S
--- linux-2.5.55/arch/parisc/vmlinux.lds.S 2003-01-02 12:34:00.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/parisc/vmlinux.lds.S 2003-01-10 19:41:28.000000000 +1100
@@ -49,6 +49,10 @@ SECTIONS
__ksymtab : { *(__ksymtab) }
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only symbols */
+ __gpl_ksymtab : { *(__gpl_ksymtab) }
+ __stop___gpl_ksymtab = .;
+
__start___kallsyms = .; /* All kernel symbols */
__kallsyms : { *(__kallsyms) }
__stop___kallsyms = .;
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/ppc/vmlinux.lds.S working-2.5.55-gpl_ksymtab/arch/ppc/vmlinux.lds.S
--- linux-2.5.55/arch/ppc/vmlinux.lds.S 2003-01-02 12:46:15.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/ppc/vmlinux.lds.S 2003-01-10 19:41:22.000000000 +1100
@@ -61,6 +61,10 @@ SECTIONS
__ksymtab : { *(__ksymtab) }
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only symbols */
+ __gpl_ksymtab : { *(__gpl_ksymtab) }
+ __stop___gpl_ksymtab = .;
+
__start___kallsyms = .; /* All kernel symbols */
__kallsyms : { *(__kallsyms) }
__stop___kallsyms = .;
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/ppc64/vmlinux.lds.S working-2.5.55-gpl_ksymtab/arch/ppc64/vmlinux.lds.S
--- linux-2.5.55/arch/ppc64/vmlinux.lds.S 2003-01-02 12:46:15.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/ppc64/vmlinux.lds.S 2003-01-10 19:41:14.000000000 +1100
@@ -69,6 +69,10 @@ SECTIONS
__ksymtab : { *(__ksymtab) }
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only symbols */
+ __gpl_ksymtab : { *(__gpl_ksymtab) }
+ __stop___gpl_ksymtab = .;
+
__start___kallsyms = .; /* All kernel symbols */
__kallsyms : { *(__kallsyms) }
__stop___kallsyms = .;
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/s390/vmlinux.lds.S working-2.5.55-gpl_ksymtab/arch/s390/vmlinux.lds.S
--- linux-2.5.55/arch/s390/vmlinux.lds.S 2003-01-02 12:35:59.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/s390/vmlinux.lds.S 2003-01-10 19:41:06.000000000 +1100
@@ -30,6 +30,10 @@ SECTIONS
__ksymtab : { *(__ksymtab) }
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only symbols */
+ __gpl_ksymtab : { *(__gpl_ksymtab) }
+ __stop___gpl_ksymtab = .;
+
#ifdef CONFIG_SHARED_KERNEL
. = ALIGN(1048576); /* VM shared segments are 1MB aligned */
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/s390x/vmlinux.lds.S working-2.5.55-gpl_ksymtab/arch/s390x/vmlinux.lds.S
--- linux-2.5.55/arch/s390x/vmlinux.lds.S 2003-01-02 12:35:59.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/s390x/vmlinux.lds.S 2003-01-10 19:40:57.000000000 +1100
@@ -30,6 +30,10 @@ SECTIONS
__ksymtab : { *(__ksymtab) }
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only symbols */
+ __gpl_ksymtab : { *(__gpl_ksymtab) }
+ __stop___gpl_ksymtab = .;
+
#ifdef CONFIG_SHARED_KERNEL
. = ALIGN(1048576); /* VM shared segments are 1MB aligned */
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/sh/vmlinux.lds.S working-2.5.55-gpl_ksymtab/arch/sh/vmlinux.lds.S
--- linux-2.5.55/arch/sh/vmlinux.lds.S 2003-01-02 12:03:44.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/sh/vmlinux.lds.S 2003-01-10 19:40:32.000000000 +1100
@@ -37,6 +37,10 @@ SECTIONS
__ksymtab : { *(__ksymtab) }
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only symbols */
+ __gpl_ksymtab : { *(__gpl_ksymtab) }
+ __stop___gpl_ksymtab = .;
+
__start___kallsyms = .; /* All kernel symbols */
__kallsyms : { *(__kallsyms) }
__stop___kallsyms = .;
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/sparc/vmlinux.lds.S working-2.5.55-gpl_ksymtab/arch/sparc/vmlinux.lds.S
--- linux-2.5.55/arch/sparc/vmlinux.lds.S 2003-01-02 14:47:58.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/sparc/vmlinux.lds.S 2003-01-10 19:40:12.000000000 +1100
@@ -35,6 +35,10 @@ SECTIONS
__ksymtab : { *(__ksymtab) }
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .;
+ __gpl_ksymtab : { *(__gpl_ksymtab) }
+ __stop___gpl_ksymtab = .;
+
__start___kallsyms = .; /* All kernel symbols */
__kallsyms : { *(__kallsyms) }
__stop___kallsyms = .;
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/sparc64/vmlinux.lds.S working-2.5.55-gpl_ksymtab/arch/sparc64/vmlinux.lds.S
--- linux-2.5.55/arch/sparc64/vmlinux.lds.S 2003-01-02 12:46:15.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/sparc64/vmlinux.lds.S 2003-01-10 19:39:52.000000000 +1100
@@ -39,6 +39,9 @@ SECTIONS
__start___ksymtab = .;
__ksymtab : { *(__ksymtab) }
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .;
+ __gpl_ksymtab : { *(__gpl_ksymtab) }
+ __stop___gpl_ksymtab = .;
__kstrtab : { *(.kstrtab) }
__start___kallsyms = .; /* All kernel symbols */
__kallsyms : { *(__kallsyms) }
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/v850/vmlinux.lds.S working-2.5.55-gpl_ksymtab/arch/v850/vmlinux.lds.S
--- linux-2.5.55/arch/v850/vmlinux.lds.S 2003-01-02 12:46:59.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/v850/vmlinux.lds.S 2003-01-10 19:39:33.000000000 +1100
@@ -51,6 +51,9 @@
___start___ksymtab = . ;/* Kernel symbol table. */ \
*(__ksymtab) \
___stop___ksymtab = . ; \
+ ___start___gpl_ksymtab = . ;/* GPL Kernel symbol table. */ \
+ *(__gpl_ksymtab) \
+ ___stop___gpl_ksymtab = . ; \
. = ALIGN (4) ; \
__etext = . ;
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.55/arch/x86_64/vmlinux.lds.S working-2.5.55-gpl_ksymtab/arch/x86_64/vmlinux.lds.S
--- linux-2.5.55/arch/x86_64/vmlinux.lds.S 2003-01-02 12:47:00.000000000 +1100
+++ working-2.5.55-gpl_ksymtab/arch/x86_64/vmlinux.lds.S 2003-01-10 19:38:12.000000000 +1100
@@ -30,6 +30,9 @@ SECTIONS
__start___ksymtab = .; /* Kernel symbol table */
__ksymtab : { *(__ksymtab) }
__stop___ksymtab = .;
+ __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only symbols */
+ __gpl_ksymtab : { *(__gpl_ksymtab) }
+ __stop___gpl_ksymtab = .;
__start___kallsyms = .; /* All kernel symbols */
__kallsyms : { *(__kallsyms) }
^ permalink raw reply
* Re: Another idea for simplifying locking in kernel/module.c
From: Adam J. Richter @ 2003-01-10 9:10 UTC (permalink / raw)
To: rusty; +Cc: linux-kernel
Rusty Russell wrote:
>In message <200301070219.SAA12905@adam.yggdrasil.com> you write:
>> Here is a way to replace all of the specialized "stop CPU"
>> locking code in kernel/module.c with an rw_semaphore by using
>> down_read_trylock in try_module_get() and down_write when beginning to
>> unload the module.
>And now you can't modularize netfilter modules.
Why not? Last time you went looking in the networking code
for an example of something that had to increment a module reference
in a context where blocking was not allowed you ended up conceding
that you example was incorrect. If you've now found an example,
please let me know.
I just booted my gateway machine to a kernel using my
aforemetioned patch and various netfilter modules. I've surfed the
web, FTP'ed file and run irc through it. It seems to be okay.
Here is the lsmod listing from it.
Module Size Used by
iptable_nat 28324 1 [unsafe],
ip_conntrack 39788 2 iptable_nat,[unsafe],
ext2 60712 0 -
pcmcia_core 55744 0 -
i810 65816 0 -
atkbd 6820 0 -
i8042 8864 0 -
serio 4564 2 atkbd,i8042,
autofs 14992 1 -
ipt_TCPMSS 3568 1 [unsafe],
iptable_filter 2272 1 [unsafe],
ip_tables 17296 8 iptable_nat,ipt_TCPMSS,iptable_filter,[unsafe],
nfsd 111824 1 [unsafe],
exportfs 6160 1 nfsd,
nfs 132092 0 -
lockd 58736 3 nfsd,nfs,[unsafe],
sunrpc 114136 4 nfsd,nfs,lockd,[unsafe],
pppoe 14336 1 [unsafe],
pppox 3480 1 pppoe,
af_packet 20760 2 [unsafe],
ppp_async 11296 0 -
ppp_generic 30264 5 pppoe,pppox,ppp_async,
slhc 6576 1 ppp_generic,
ipv4 392804 88 iptable_nat,ip_conntrack,sunrpc,af_packet,[unsafe],
unix 23884 11 [unsafe],
sis_agp 4224 0 -
agpgart 23248 2 sis_agp,
ohci_hcd 28400 0 -
usbcore 101108 3 ohci_hcd,
ac97_codec 12432 0 -
sis900 16548 0 -
tulip 52960 2 [unsafe],
crc32 4272 2 sis900,tulip,
ext3 112232 3 -
jbd 65840 1 ext3,
mbcache 7764 2 ext2,ext3,
ide_disk 17332 5 -
ide_mod 143684 1 ide_disk,[unsafe],
Adam J. Richter __ ______________ 575 Oroville Road
adam@yggdrasil.com \ / Milpitas, California 95035
+1 408 309-6081 | g g d r a s i l United States of America
"Free Software For The Rest Of Us."
^ permalink raw reply
* Re: [PATCH][TRIVIAL] checksum.h header fixes for 2.4
From: Rusty Russell @ 2003-01-10 7:47 UTC (permalink / raw)
To: Eric Weigle, Marcelo Tosatti; +Cc: Linux kernel mailing list
In-Reply-To: <20030109200646.GG3329@lanl.gov>
In message <20030109200646.GG3329@lanl.gov> you write:
> All-
>
> I'm making a loadable module that will send IP packets; and need to do IP
> checksums. Unfortunately a simple #include of checksum.h fails because that
> file does not itself include the headers required to compile correctly.
> Several of the arch-specific files are this way.
>
> * Some files use VERIFY_READ, VERIFY_WRITE, access_ok from uaccess.h but do
> not include uaccess.h
>
> * Some files have an IPv6 checksum with struct in6_addr, but do not include
> linux/in6.h. x86_64 just defines the structure instead of including the
> file. Either way works, but it's inconsistent. I've moved them all to the
> #include, but they could all go to the struct in6_addr way too.
Two general rules I like:
1) Never include asm/xxx when there is a linux/xxx.
2) asm/ headers shouldn't include linux/ headers. It's
too easy to cause insoluble loops.
I this case, I suspect #include <net/checksum.h> is what you really
want.
Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
^ permalink raw reply
* Re: [PATCH] Deprecated exec_usermodehelper, enhance call_usermodehelper
From: Rusty Russell @ 2003-01-10 8:14 UTC (permalink / raw)
To: Marcel Holtmann
Cc: Linus Torvalds, Linux Kernel Mailing List, akpm, Thomas Sailer,
Jose Orlando Pereira, J.E.J.Bottomley
In-Reply-To: <1041909147.1016.12.camel@pegasus.local>
In message <1041909147.1016.12.camel@pegasus.local> you write:
>
> --=-RFd7TJ35Vc8g4FmlT/lM
> Content-Type: text/plain
> Content-Transfer-Encoding: 7bit
>
> Hi Rusty,
>
> > OK. This patch does that. Thomas, Marcel, James? This touches code
> > I don't use, so although the transformation is fairly trivial...
>
> it looks ok to me, but I like to have the attached patch for the bt3c_cs
> driver. My test yesterday was successful and so I vote for inclusion,
> like Thomas does.
Done. Linus, please apply.
Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
Name: exec_usermodehelper sucks
Author: Rusty Russell, Marcel Holtmann
Status: Tested on 2.5.54
D: Urban Widmark points out that modprobe calls system() in many
D: configurations, which drops privs since request_module() doesn't
D: doesn't set ruid and rguid.
D:
D: This gets rid of exec_usermodehelper and makes everyone use
D: call_usermodehelper, which has a new "wait" flag.
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5-bk/include/linux/kmod.h working-2.5-bk-kmod-noclean/include/linux/kmod.h
--- linux-2.5-bk/include/linux/kmod.h 2003-01-02 12:35:15.000000000 +1100
+++ working-2.5-bk-kmod-noclean/include/linux/kmod.h 2003-01-06 16:25:28.000000000 +1100
@@ -21,6 +21,7 @@
#include <linux/config.h>
#include <linux/errno.h>
+#include <linux/compiler.h>
#ifdef CONFIG_KMOD
extern int request_module(const char * name);
@@ -29,8 +30,7 @@ static inline int request_module(const c
#endif
#define try_then_request_module(x, mod) ((x) ?: request_module(mod), (x))
-extern int exec_usermodehelper(char *program_path, char *argv[], char *envp[]);
-extern int call_usermodehelper(char *path, char *argv[], char *envp[]);
+extern int call_usermodehelper(char *path, char *argv[], char *envp[], int wait);
#ifdef CONFIG_HOTPLUG
extern char hotplug_path [];
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5-bk/kernel/kmod.c working-2.5-bk-kmod-noclean/kernel/kmod.c
--- linux-2.5-bk/kernel/kmod.c 2003-01-02 12:37:03.000000000 +1100
+++ working-2.5-bk-kmod-noclean/kernel/kmod.c 2003-01-06 16:25:43.000000000 +1100
@@ -14,8 +14,10 @@
Unblock all signals when we exec a usermode process.
Shuu Yamaguchi <shuu@wondernetworkresources.com> December 2000
-*/
+ call_usermodehelper wait flag, and remove exec_usermodehelper.
+ Rusty Russell <rusty@rustcorp.com.au> Jan 2003
+*/
#define __KERNEL_SYSCALLS__
#include <linux/config.h>
@@ -31,121 +33,11 @@
#include <linux/workqueue.h>
#include <linux/security.h>
#include <linux/mount.h>
+#include <linux/kernel.h>
#include <asm/uaccess.h>
extern int max_threads, system_running;
-static inline void
-use_init_fs_context(void)
-{
- struct fs_struct *our_fs, *init_fs;
- struct dentry *root, *pwd;
- struct vfsmount *rootmnt, *pwdmnt;
- struct namespace *our_ns, *init_ns;
-
- /*
- * Make modprobe's fs context be a copy of init's.
- *
- * We cannot use the user's fs context, because it
- * may have a different root than init.
- * Since init was created with CLONE_FS, we can grab
- * its fs context from "init_task".
- *
- * The fs context has to be a copy. If it is shared
- * with init, then any chdir() call in modprobe will
- * also affect init and the other threads sharing
- * init_task's fs context.
- *
- * We created the exec_modprobe thread without CLONE_FS,
- * so we can update the fields in our fs context freely.
- */
-
- init_fs = init_task.fs;
- init_ns = init_task.namespace;
- get_namespace(init_ns);
- our_ns = current->namespace;
- current->namespace = init_ns;
- put_namespace(our_ns);
- read_lock(&init_fs->lock);
- rootmnt = mntget(init_fs->rootmnt);
- root = dget(init_fs->root);
- pwdmnt = mntget(init_fs->pwdmnt);
- pwd = dget(init_fs->pwd);
- read_unlock(&init_fs->lock);
-
- /* FIXME - unsafe ->fs access */
- our_fs = current->fs;
- our_fs->umask = init_fs->umask;
- set_fs_root(our_fs, rootmnt, root);
- set_fs_pwd(our_fs, pwdmnt, pwd);
- write_lock(&our_fs->lock);
- if (our_fs->altroot) {
- struct vfsmount *mnt = our_fs->altrootmnt;
- struct dentry *dentry = our_fs->altroot;
- our_fs->altrootmnt = NULL;
- our_fs->altroot = NULL;
- write_unlock(&our_fs->lock);
- dput(dentry);
- mntput(mnt);
- } else
- write_unlock(&our_fs->lock);
- dput(root);
- mntput(rootmnt);
- dput(pwd);
- mntput(pwdmnt);
-}
-
-int exec_usermodehelper(char *program_path, char *argv[], char *envp[])
-{
- int i;
- struct task_struct *curtask = current;
-
- curtask->session = 1;
- curtask->pgrp = 1;
-
- use_init_fs_context();
-
- /* Prevent parent user process from sending signals to child.
- Otherwise, if the modprobe program does not exist, it might
- be possible to get a user defined signal handler to execute
- as the super user right after the execve fails if you time
- the signal just right.
- */
- spin_lock_irq(&curtask->sig->siglock);
- sigemptyset(&curtask->blocked);
- flush_signals(curtask);
- flush_signal_handlers(curtask);
- recalc_sigpending();
- spin_unlock_irq(&curtask->sig->siglock);
-
- for (i = 0; i < curtask->files->max_fds; i++ ) {
- if (curtask->files->fd[i]) close(i);
- }
-
- /* Drop the "current user" thing */
- {
- struct user_struct *user = curtask->user;
- curtask->user = INIT_USER;
- atomic_inc(&INIT_USER->__count);
- atomic_inc(&INIT_USER->processes);
- atomic_dec(&user->processes);
- free_uid(user);
- }
-
- /* Give kmod all effective privileges.. */
- curtask->euid = curtask->fsuid = 0;
- curtask->egid = curtask->fsgid = 0;
- security_task_kmod_set_label();
-
- /* Allow execve args to be in kernel space. */
- set_fs(KERNEL_DS);
-
- /* Go, go, go... */
- if (execve(program_path, argv, envp) < 0)
- return -errno;
- return 0;
-}
-
#ifdef CONFIG_KMOD
/*
@@ -153,29 +45,6 @@ int exec_usermodehelper(char *program_pa
*/
char modprobe_path[256] = "/sbin/modprobe";
-static int exec_modprobe(void * module_name)
-{
- static char * envp[] = { "HOME=/", "TERM=linux", "PATH=/sbin:/usr/sbin:/bin:/usr/bin", NULL };
- char *argv[] = { modprobe_path, "--", (char*)module_name, NULL };
- int ret;
-
- if (!system_running)
- return -EBUSY;
-
- ret = exec_usermodehelper(modprobe_path, argv, envp);
- if (ret) {
- static unsigned long last;
- unsigned long now = jiffies;
- if (now - last > HZ) {
- last = now;
- printk(KERN_DEBUG
- "kmod: failed to exec %s -s -k %s, errno = %d\n",
- modprobe_path, (char*) module_name, errno);
- }
- }
- return ret;
-}
-
/**
* request_module - try to load a kernel module
* @module_name: Name of module
@@ -189,24 +58,18 @@ static int exec_modprobe(void * module_n
* If module auto-loading support is disabled then this function
* becomes a no-operation.
*/
-int request_module(const char * module_name)
+int request_module(const char *module_name)
{
- pid_t pid;
- int waitpid_result;
- sigset_t tmpsig;
- int i, ret;
+ unsigned int max_modprobes;
+ int ret;
+ char *argv[] = { modprobe_path, "--", (char*)module_name, NULL };
+ static char *envp[] = { "HOME=/",
+ "TERM=linux",
+ "PATH=/sbin:/usr/sbin:/bin:/usr/bin",
+ NULL };
static atomic_t kmod_concurrent = ATOMIC_INIT(0);
#define MAX_KMOD_CONCURRENT 50 /* Completely arbitrary value - KAO */
static int kmod_loop_msg;
- unsigned long saved_policy = current->policy;
-
- current->policy = SCHED_NORMAL;
- /* Don't allow request_module() when the system isn't set up */
- if ( ! system_running ) {
- printk(KERN_ERR "request_module[%s]: not ready\n", module_name);
- ret = -EPERM;
- goto out;
- }
/* If modprobe needs a service that is in a module, we get a recursive
* loop. Limit the number of running kmod threads to max_threads/2 or
@@ -216,61 +79,44 @@ int request_module(const char * module_n
* process tables to get the command line, proc_pid_cmdline is static
* and it is not worth changing the proc code just to handle this case.
* KAO.
+ *
+
+ * "trace the ppid" is simple, but will fail if someone's
+ * parent exits. I think this is as good as it gets. --RR
*/
- i = max_threads/2;
- if (i > MAX_KMOD_CONCURRENT)
- i = MAX_KMOD_CONCURRENT;
+ max_modprobes = min(max_threads/2, MAX_KMOD_CONCURRENT);
atomic_inc(&kmod_concurrent);
- if (atomic_read(&kmod_concurrent) > i) {
+ if (atomic_read(&kmod_concurrent) > max_modprobes) {
+ /* We may be blaming an innocent here, but unlikely */
if (kmod_loop_msg++ < 5)
printk(KERN_ERR
- "kmod: runaway modprobe loop assumed and stopped\n");
+ "request_module: runaway loop modprobe %s\n",
+ module_name);
atomic_dec(&kmod_concurrent);
- ret = -ENOMEM;
- goto out;
+ return -ENOMEM;
}
- pid = kernel_thread(exec_modprobe, (void*) module_name, 0);
- if (pid < 0) {
- printk(KERN_ERR "request_module[%s]: fork failed, errno %d\n", module_name, -pid);
- atomic_dec(&kmod_concurrent);
- ret = pid;
- goto out;
+ ret = call_usermodehelper(modprobe_path, argv, envp, 1);
+ if (ret < 0) { /* Exec failed, or fork failed or something bad */
+ static unsigned long last;
+ unsigned long now = jiffies;
+ if (now - last > HZ) {
+ last = now;
+ printk(KERN_DEBUG
+ "request_module: failed %s -- %s. error = %d\n",
+ modprobe_path, module_name, -ret);
+ }
}
-
- /* Block everything but SIGKILL/SIGSTOP */
- spin_lock_irq(¤t->sig->siglock);
- tmpsig = current->blocked;
- siginitsetinv(¤t->blocked, sigmask(SIGKILL) | sigmask(SIGSTOP));
- recalc_sigpending();
- spin_unlock_irq(¤t->sig->siglock);
-
- waitpid_result = waitpid(pid, NULL, __WCLONE);
atomic_dec(&kmod_concurrent);
-
- /* Allow signals again.. */
- spin_lock_irq(¤t->sig->siglock);
- current->blocked = tmpsig;
- recalc_sigpending();
- spin_unlock_irq(¤t->sig->siglock);
-
- if (waitpid_result != pid) {
- printk(KERN_ERR "request_module[%s]: waitpid(%d,...) failed, errno %d\n",
- module_name, pid, -waitpid_result);
- }
- ret = 0;
-out:
- current->policy = saved_policy;
- return ret;
+ return ret < 0 ? ret : 0;
}
#endif /* CONFIG_KMOD */
-
#ifdef CONFIG_HOTPLUG
/*
hotplug path is set via /proc/sys
invoked by hotplug-aware bus drivers,
- with exec_usermodehelper and some thread-spawner
+ with call_usermodehelper
argv [0] = hotplug_path;
argv [1] = "usb", "scsi", "pci", "network", etc;
@@ -294,7 +140,8 @@ struct subprocess_info {
char *path;
char **argv;
char **envp;
- pid_t retval;
+ int wait;
+ int retval;
};
/*
@@ -307,13 +154,30 @@ static int ____call_usermodehelper(void
retval = -EPERM;
if (current->fs->root)
- retval = exec_usermodehelper(sub_info->path, sub_info->argv, sub_info->envp);
+ retval = execve(program_path, argv, envp);
/* Exec failed? */
- sub_info->retval = (pid_t)retval;
+ sub_info->retval = retval;
do_exit(0);
}
+/* Keventd can't block, but this (a child) can. */
+static int wait_for_helper(void *data)
+{
+ struct subprocess_info *sub_info = data;
+ pid_t pid;
+
+ pid = kernel_thread(____call_usermodehelper, sub_info,
+ CLONE_VFORK | SIGCHLD);
+ if (pid < 0)
+ sub_info->retval = pid;
+ else
+ sys_wait4(pid, (unsigned int *)&sub_info->retval, 0, NULL);
+
+ complete(sub_info->complete);
+ return 0;
+}
+
/*
* This is run by keventd.
*/
@@ -322,14 +186,21 @@ static void __call_usermodehelper(void *
struct subprocess_info *sub_info = data;
pid_t pid;
- /*
- * CLONE_VFORK: wait until the usermode helper has execve'd successfully
- * We need the data structures to stay around until that is done.
- */
- pid = kernel_thread(____call_usermodehelper, sub_info, CLONE_VFORK | SIGCHLD);
- if (pid < 0)
+ /* CLONE_VFORK: wait until the usermode helper has execve'd
+ * successfully We need the data structures to stay around
+ * until that is done. */
+ if (sub_info->wait)
+ pid = kernel_thread(wait_for_helper, sub_info,
+ CLONE_KERNEL | SIGCHLD);
+ else
+ pid = kernel_thread(____call_usermodehelper, sub_info,
+ CLONE_VFORK | SIGCHLD);
+
+ if (pid < 0) {
sub_info->retval = pid;
- complete(sub_info->complete);
+ complete(sub_info->complete);
+ } else if (!sub_info->wait)
+ complete(sub_info->complete);
}
/**
@@ -337,15 +208,17 @@ static void __call_usermodehelper(void *
* @path: pathname for the application
* @argv: null-terminated argument list
* @envp: null-terminated environment list
+ * @wait: wait for the application to finish and return status.
*
- * Runs a user-space application. The application is started asynchronously. It
- * runs as a child of keventd. It runs with full root capabilities. keventd silently
- * reaps the child when it exits.
+ * Runs a user-space application. The application is started
+ * asynchronously if wait is not set, and runs as a child of keventd.
+ * (ie. it runs with full root capabilities).
*
- * Must be called from process context. Returns zero on success, else a negative
- * error code.
+ * Must be called from process context. Returns a negative error code
+ * if program was not execed successfully, or (exitcode << 8 + signal)
+ * of the application (0 if wait is not set).
*/
-int call_usermodehelper(char *path, char **argv, char **envp)
+int call_usermodehelper(char *path, char **argv, char **envp, int wait)
{
DECLARE_COMPLETION(done);
struct subprocess_info sub_info = {
@@ -353,6 +226,7 @@ int call_usermodehelper(char *path, char
.path = path,
.argv = argv,
.envp = envp,
+ .wait = wait,
.retval = 0,
};
DECLARE_WORK(work, __call_usermodehelper, &sub_info);
@@ -390,7 +264,6 @@ void dev_probe_unlock(void)
up(&dev_probe_sem);
}
-EXPORT_SYMBOL(exec_usermodehelper);
EXPORT_SYMBOL(call_usermodehelper);
#ifdef CONFIG_KMOD
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5-bk/arch/i386/mach-voyager/voyager_thread.c working-2.5-bk-kmod-noclean/arch/i386/mach-voyager/voyager_thread.c
--- linux-2.5-bk/arch/i386/mach-voyager/voyager_thread.c 2003-01-02 12:32:34.000000000 +1100
+++ working-2.5-bk-kmod-noclean/arch/i386/mach-voyager/voyager_thread.c 2003-01-06 16:24:54.000000000 +1100
@@ -57,7 +57,7 @@ voyager_thread_start(void)
}
static int
-execute_helper(void *string)
+execute(const char *string)
{
int ret;
@@ -74,23 +74,14 @@ execute_helper(void *string)
NULL,
};
- if((ret = exec_usermodehelper(argv[0], argv, envp)) < 0) {
- printk(KERN_ERR "Voyager failed to execute \"%s\"\n",
- (char *)string);
+ if ((ret = call_usermodehelper(argv[0], argv, envp, 1)) != 0) {
+ printk(KERN_ERR "Voyager failed to run \"%s\": %i\n",
+ string, ret);
}
return ret;
}
static void
-execute(char *string)
-{
- if(kernel_thread(execute_helper, (void *)string, CLONE_VFORK | SIGCHLD) < 0) {
- printk(KERN_ERR "Voyager failed to fork before exec of \"%s\"\n",
- string);
- }
-}
-
-static void
check_from_kernel(void)
{
if(voyager_status.switch_off) {
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5-bk/drivers/acpi/thermal.c working-2.5-bk-kmod-noclean/drivers/acpi/thermal.c
--- linux-2.5-bk/drivers/acpi/thermal.c 2003-01-02 12:47:01.000000000 +1100
+++ working-2.5-bk-kmod-noclean/drivers/acpi/thermal.c 2003-01-06 15:43:53.000000000 +1100
@@ -431,7 +431,7 @@ acpi_thermal_call_usermode (
envp[0] = "HOME=/";
envp[1] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
- call_usermodehelper(argv[0], argv, envp);
+ call_usermodehelper(argv[0], argv, envp, 0);
return_VALUE(0);
}
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5-bk/drivers/base/hotplug.c working-2.5-bk-kmod-noclean/drivers/base/hotplug.c
--- linux-2.5-bk/drivers/base/hotplug.c 2003-01-02 12:46:16.000000000 +1100
+++ working-2.5-bk-kmod-noclean/drivers/base/hotplug.c 2003-01-06 15:43:53.000000000 +1100
@@ -114,7 +114,7 @@ static int do_hotplug (struct device *de
pr_debug ("%s: %s %s %s %s %s %s\n", __FUNCTION__, argv [0], argv[1],
envp[0], envp[1], envp[2], envp[3]);
- retval = call_usermodehelper (argv [0], argv, envp);
+ retval = call_usermodehelper (argv [0], argv, envp, 0);
if (retval)
pr_debug ("%s - call_usermodehelper returned %d\n",
__FUNCTION__, retval);
diff -urN linux-2.5.54/drivers/bluetooth/bt3c_cs.c linux-2.5.54-mh/drivers/bluetooth/bt3c_cs.c
--- linux-2.5.54/drivers/bluetooth/bt3c_cs.c Thu Jan 2 04:23:16 2003
+++ linux-2.5.54-mh/drivers/bluetooth/bt3c_cs.c Mon Jan 6 22:25:30 2003
@@ -24,18 +24,14 @@
#include <linux/config.h>
#include <linux/module.h>
-#define __KERNEL_SYSCALLS__
-
#include <linux/kernel.h>
#include <linux/kmod.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/sched.h>
-#include <linux/delay.h>
#include <linux/timer.h>
#include <linux/errno.h>
-#include <linux/unistd.h>
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/spinlock.h>
@@ -405,7 +401,6 @@
-
/* ======================== HCI interface ======================== */
@@ -489,65 +484,23 @@
#define FW_LOADER "/sbin/bluefw"
-static int errno;
-
-
-static int bt3c_fw_loader_exec(void *dev)
-{
- char *argv[] = { FW_LOADER, "pccard", dev, NULL };
- char *envp[] = { "HOME=/", "TERM=linux", "PATH=/sbin:/usr/sbin:/bin:/usr/bin", NULL };
- int err;
-
- err = exec_usermodehelper(FW_LOADER, argv, envp);
- if (err)
- printk(KERN_WARNING "bt3c_cs: Failed to exec \"%s pccard %s\".\n", FW_LOADER, (char *)dev);
-
- return err;
-}
static int bt3c_firmware_load(bt3c_info_t *info)
{
- sigset_t tmpsig;
char dev[16];
- pid_t pid;
- int result;
+ int err;
- /* Check if root fs is mounted */
- if (!current->fs->root) {
- printk(KERN_WARNING "bt3c_cs: Root filesystem is not mounted.\n");
- return -EPERM;
- }
+ char *argv[] = { FW_LOADER, "pccard", dev, NULL };
+ char *envp[] = { "HOME=/", "TERM=linux", "PATH=/sbin:/usr/sbin:/bin:/usr/bin", NULL };
sprintf(dev, "%04x", info->link.io.BasePort1);
- pid = kernel_thread(bt3c_fw_loader_exec, (void *)dev, 0);
- if (pid < 0) {
- printk(KERN_WARNING "bt3c_cs: Forking of kernel thread failed (errno=%d).\n", -pid);
- return pid;
- }
-
- /* Block signals, everything but SIGKILL/SIGSTOP */
- spin_lock_irq(¤t->sig->siglock);
- tmpsig = current->blocked;
- siginitsetinv(¤t->blocked, sigmask(SIGKILL) | sigmask(SIGSTOP));
- recalc_sigpending();
- spin_unlock_irq(¤t->sig->siglock);
-
- result = waitpid(pid, NULL, __WCLONE);
-
- /* Allow signals again */
- spin_lock_irq(¤t->sig->siglock);
- current->blocked = tmpsig;
- recalc_sigpending();
- spin_unlock_irq(¤t->sig->siglock);
-
- if (result != pid) {
- printk(KERN_WARNING "bt3c_cs: Waiting for pid %d failed (errno=%d).\n", pid, -result);
- return -result;
- }
+ err = call_usermodehelper(FW_LOADER, argv, envp, 1);
+ if (err)
+ printk(KERN_WARNING "bt3c_cs: Failed to run \"%s pccard %s\" (errno=%d).\n", FW_LOADER, dev, err);
- return 0;
+ return err;
}
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5-bk/drivers/ieee1394/nodemgr.c working-2.5-bk-kmod-noclean/drivers/ieee1394/nodemgr.c
--- linux-2.5-bk/drivers/ieee1394/nodemgr.c 2003-01-02 12:46:17.000000000 +1100
+++ working-2.5-bk-kmod-noclean/drivers/ieee1394/nodemgr.c 2003-01-06 15:43:53.000000000 +1100
@@ -786,7 +786,7 @@ static void nodemgr_call_policy(char *ve
#ifdef CONFIG_IEEE1394_VERBOSEDEBUG
HPSB_DEBUG("NodeMgr: %s %s %016Lx", argv[0], verb, (long long unsigned)ud->ne->guid);
#endif
- value = call_usermodehelper(argv[0], argv, envp);
+ value = call_usermodehelper(argv[0], argv, envp, 0);
kfree(buf);
kfree(envp);
if (value != 0)
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5-bk/drivers/input/input.c working-2.5-bk-kmod-noclean/drivers/input/input.c
--- linux-2.5-bk/drivers/input/input.c 2003-01-02 12:30:27.000000000 +1100
+++ working-2.5-bk-kmod-noclean/drivers/input/input.c 2003-01-06 15:43:54.000000000 +1100
@@ -383,7 +383,7 @@ static void input_call_hotplug(char *ver
argv[0], argv[1], envp[0], envp[1], envp[2], envp[3], envp[4]);
#endif
- value = call_usermodehelper(argv [0], argv, envp);
+ value = call_usermodehelper(argv [0], argv, envp, 0);
kfree(buf);
kfree(envp);
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5-bk/drivers/isdn/hardware/eicon/divasmain.c working-2.5-bk-kmod-noclean/drivers/isdn/hardware/eicon/divasmain.c
--- linux-2.5-bk/drivers/isdn/hardware/eicon/divasmain.c 2003-01-02 12:45:18.000000000 +1100
+++ working-2.5-bk-kmod-noclean/drivers/isdn/hardware/eicon/divasmain.c 2003-01-06 15:43:54.000000000 +1100
@@ -263,7 +263,7 @@ static void diva_adapter_trapped(void *c
pdpc->card_failed = 0;
argv[2] = &adapter[0];
- ret = call_usermodehelper(argv[0], argv, envp);
+ ret = call_usermodehelper(argv[0], argv, envp, 0);
if (ret) {
printk(KERN_ERR
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5-bk/drivers/net/hamradio/baycom_epp.c working-2.5-bk-kmod-noclean/drivers/net/hamradio/baycom_epp.c
--- linux-2.5-bk/drivers/net/hamradio/baycom_epp.c 2003-01-02 14:47:58.000000000 +1100
+++ working-2.5-bk-kmod-noclean/drivers/net/hamradio/baycom_epp.c 2003-01-06 16:19:12.000000000 +1100
@@ -369,15 +369,14 @@ static char eppconfig_path[256] = "/usr/
static char *envp[] = { "HOME=/", "TERM=linux", "PATH=/usr/bin:/bin", NULL };
-static int errno;
-
-static int exec_eppfpga(void *b)
+/* eppconfig: called during ifconfig up to configure the modem */
+static int eppconfig(struct baycom_state *bc)
{
- struct baycom_state *bc = (struct baycom_state *)b;
char modearg[256];
char portarg[16];
- char *argv[] = { eppconfig_path, "-s", "-p", portarg, "-m", modearg, NULL};
- int i;
+ char *argv[] = { eppconfig_path, "-s", "-p", portarg, "-m", modearg,
+ NULL };
+ int ret;
/* set up arguments */
sprintf(modearg, "%sclk,%smodem,fclk=%d,bps=%d,divider=%d%s,extstat",
@@ -388,39 +387,7 @@ static int exec_eppfpga(void *b)
sprintf(portarg, "%ld", bc->pdev->port->base);
printk(KERN_DEBUG "%s: %s -s -p %s -m %s\n", bc_drvname, eppconfig_path, portarg, modearg);
- i = exec_usermodehelper(eppconfig_path, argv, envp);
- if (i < 0) {
- printk(KERN_ERR "%s: failed to exec %s -s -p %s -m %s, errno = %d\n",
- bc_drvname, eppconfig_path, portarg, modearg, i);
- return i;
- }
- return 0;
-}
-
-
-/* eppconfig: called during ifconfig up to configure the modem */
-
-static int eppconfig(struct baycom_state *bc)
-{
- int i, pid, r;
- mm_segment_t fs;
-
- pid = kernel_thread(exec_eppfpga, bc, CLONE_FS);
- if (pid < 0) {
- printk(KERN_ERR "%s: fork failed, errno %d\n", bc_drvname, -pid);
- return pid;
- }
- fs = get_fs();
- set_fs(KERNEL_DS); /* Allow i to be in kernel space. */
- r = waitpid(pid, &i, __WCLONE);
- set_fs(fs);
- if (r != pid) {
- printk(KERN_ERR "%s: waitpid(%d) failed, returning %d\n",
- bc_drvname, pid, r);
- return -1;
- }
- printk(KERN_DEBUG "%s: eppfpga returned %d\n", bc_drvname, i);
- return i;
+ return call_usermodehelper(eppconfig_path, argv, envp, 1);
}
/* ---------------------------------------------------------------------- */
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5-bk/drivers/pnp/pnpbios/core.c working-2.5-bk-kmod-noclean/drivers/pnp/pnpbios/core.c
--- linux-2.5-bk/drivers/pnp/pnpbios/core.c 2003-01-02 14:47:59.000000000 +1100
+++ working-2.5-bk-kmod-noclean/drivers/pnp/pnpbios/core.c 2003-01-06 15:43:54.000000000 +1100
@@ -602,7 +602,7 @@ static int pnp_dock_event(int dock, stru
info->location_id, info->serial, info->capabilities);
envp[i] = 0;
- value = call_usermodehelper (argv [0], argv, envp);
+ value = call_usermodehelper (argv [0], argv, envp, 0);
kfree (buf);
kfree (envp);
return 0;
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5-bk/net/bluetooth/hci_core.c working-2.5-bk-kmod-noclean/net/bluetooth/hci_core.c
--- linux-2.5-bk/net/bluetooth/hci_core.c 2003-01-02 12:33:56.000000000 +1100
+++ working-2.5-bk-kmod-noclean/net/bluetooth/hci_core.c 2003-01-06 15:43:54.000000000 +1100
@@ -114,7 +114,7 @@ static int hci_run_hotplug(char *dev, ch
envp[3] = astr;
envp[4] = NULL;
- return call_usermodehelper(argv[0], argv, envp);
+ return call_usermodehelper(argv[0], argv, envp, 0);
}
#else
#define hci_run_hotplug(A...)
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5-bk/net/core/dev.c working-2.5-bk-kmod-noclean/net/core/dev.c
--- linux-2.5-bk/net/core/dev.c 2003-01-02 14:48:01.000000000 +1100
+++ working-2.5-bk-kmod-noclean/net/core/dev.c 2003-01-06 15:43:54.000000000 +1100
@@ -2918,6 +2918,6 @@ static int net_run_sbin_hotplug(struct n
envp [i++] = action_str;
envp [i] = 0;
- return call_usermodehelper(argv [0], argv, envp);
+ return call_usermodehelper(argv [0], argv, envp, 0);
}
#endif
^ permalink raw reply
* Re: Kernel Oops with HIMEM+VM in 2.4.19,20
From: Denis Vlasenko @ 2003-01-10 9:08 UTC (permalink / raw)
To: Anthony Lau, linux-kernel
In-Reply-To: <20030110083714.GA702@kimagure>
On 10 January 2003 10:37, Anthony Lau wrote:
> Hello,
>
> I am getting reproducible kernel oops and random segmentation
> faults whenever the kernel starts using VM. Without any VM pages
> being used, the system is stable.
>
> I have tested kernels compiled with and without HIMEM support
> (all other kernel config options identical). Without HIMEM 4GB
> support, the system is stable for weeks. With HIMEM 4GB support,
> the system starts oops'ing and seg. faulting when VM starts
> being used.
You mean when your system starts to swap? Details?
(How much/how heavy it swaps before oops? vmstat output?)
> My system info:
>
> 1.5GB physical RAM (MemTest86 run for 2 times, no errors)
> 2.0GB VM on a partition
> Aopen AX34u with Via Apollo Pro 133T chipset
>
> Sample Oops from logs:
[snipped]
>
> Because of the symptoms, I think that there could be some
> incompatibility between Himem and the VM subsystem. Of course
> I may have just configured my kernel incorrectly.
>
> Any help is appreciated and I will gladly supply more logs
> if I knew which ones would be useful.
Kernel version and .config?
Arrange klogd to be started with -x. Process oopses with ksymoops.
Then contact VM people (listed in no particular order):
William Irwin <wli@holomorphy.com> [02 jul 2002]
Send bug reports and/or feature requests related to many tasks,
rmap, space consumption, or allocators to me. I'm involved in
* rmap
* memory allocators
* reducing space consumed by data structures (e.g. struct page)
* issues arising in workloads with many tasks
* kernel janitoring
See also:
Rik van Riel <riel@surriel.com>
Andrea Arcangeli <andrea@suse.de>
Martin Bligh <Martin.Bligh@us.ibm.com>
Andrew Morton <akpm@digeo.com>
Andrea Arcangeli <andrea@suse.de> [28 mar 2002]
Send VM related bug reports and patches to me.
I'm especially interested in VM issues with:
* lots of RAM and CPUs
* NUMA
* heavy swap scenarios
* performance of I/O intensive workloads (in particular
with lots of async buffer flushing involved)
See also Martin J. Bligh <Martin.Bligh@us.ibm.com> entry
Mail also:
Arjan van de Ven <arjanv@redhat.com>
Martin J. Bligh <Martin.Bligh@us.ibm.com> [28 mar 2002]
I'm interested in VM issues with lots (>4G for i386)
of RAM, lots of CPUs, NUMA
Rik van Riel <riel@conectiva.com.br> [07 feb 2002]
Send me VM related stuff, please CC to linux-mm@kvack.org
--
vda
^ permalink raw reply
* [LARTC] new FAQ: "HTB: mindelay=500, report it please"
From: devik @ 2003-01-10 9:11 UTC (permalink / raw)
To: lartc
added to http://luxik.cdi.cz/~devik/qos/htb/
FAQ section.
-------------------------------
Martin Devera aka devik
Linux kernel QoS/HTB maintainer
http://luxik.cdi.cz/~devik/
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
^ permalink raw reply
* Re: VIA8233/8235 testers wanted
From: Joachim Blaabjerg @ 2003-01-10 9:13 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel
In-Reply-To: <s5h3co18knt.wl@alsa2.suse.de>
On Friday 10 January 2003 09:37, Takashi Iwai wrote:
> At Fri, 10 Jan 2003 09:17:28 +0100,
>
> Joachim Blaabjerg wrote:
> > On Thursday 09 January 2003 18:01, Takashi Iwai wrote:
> > > Hi,
> > >
> > > if someone has VIA8233, VIA8233A, VIA8233C or VIA8235 chipset, could
> > > you help the testing of the new driver?
> > > the new driver code is found at
> > >
> > > http://www.alsa-project.org/~iwai/via82xx.c
> > > [...]
> >
> > I'm getting an unresolved symbol: snd_pcm_substream_sgbuf, and a
> > recursive grep in the alsa-driver sources show only one match in, you
> > guessed it, snd-via82xx.c.
>
> please try the very latest cvs version.
> (the best is to get the source via cvs, not cvs-snapshot).
> there are many changes recently.
Ah yes, thanks.
It compiles and loads nicely, but there are some problems using it. I tried
starting UT2003 while XMMS was playing, and there was indeed sound from both,
but the UT2003 sound was quite choppy. When I exited UT2003, the last sound
it played is still there, and plays over and over again (ut2003-bin hangs). I
get the following warning from ALSA:
ALSA lib pcm_hw.c:398:(snd_pcm_hw_prepare) SNDRV_PCM_IOCTL_PREPARE failed:
Device or resource busy
I figured UT2003 and its sound system was probably rather weird, so I tried
again with mpg231 and mplayer, which worked beautifully. Thanks! :)
Btw, this is a VT-8235 sound chip.
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
^ permalink raw reply
* Re: ksoftirqd_CPU0 causing severe latency
From: Denis Vlasenko @ 2003-01-10 9:16 UTC (permalink / raw)
To: Jim Roland, linux-kernel
In-Reply-To: <004d01c2b873$44156d80$2002a8c0@jimws>
On 10 January 2003 08:41, Jim Roland wrote:
> I am running a RH7.2 router with kernel 2.4.18-19.7.x and upgraded
> from 2.4.18-17 in hopes this would fix the problem, but it hasn't.
>
> The problem I am experiencing is that after a while, the system
> begins to lag badly, and running "ps -ax" writes to a SSH console
> like a terminal running at 14.4kbps. This only seems to have
> occurred after the box started procesing a network load.
>
> The box is a router, with a Supermicro (model=?) motherboard with
> embedded Intel EEpro/100 NICs using the eepro100 module. This box is
> also serving as an iptables filter for the network as well. It's
> processing approximately 60Mbps sustained traffic outbound, and about
> 10-15Mbps traffic inbound.
That's not a small figure :)
> The box also lags SEVERLY when I'm trying to use the state matching
> in the kernel (as module), lagging badly when ip_conntrack is loaded.
>
> In contrast, I am running the same OS and kernel versions on another
> box (same modules) and am not having the same problem (it is only
> handling about 5Mbps sustained out, and 1Mbps sustained inbound).
>
> I need HELP!
Profile your box. (We need to know where it spends most of CPU time).
Send profile data to the list.
Also collect interrupt rate info.
You may also look into Intel EEpro/100 driver's interrupt handler code.
Does is lag that bad without iptables?
--
vda
^ permalink raw reply
* Re: NFS as a Cluster File System.
From: Brian Tinsley @ 2003-01-09 21:11 UTC (permalink / raw)
To: Lorn Kay; +Cc: nfs, linux-ha
In-Reply-To: <F112Sbh29cM3oryKFRJ0001248d@hotmail.com>
Lorn Kay wrote:
>
> Is NFS a viable CFS? (I'm cross posting this due to a discussion on
> the the linux-ha list recently.)
Since there is not a really good cluster filesystem for Linux that is
not either "half baked" (IMHO - I'm probably going to get smacked over
that statement!) or cost an arm and a leg, this is exactly the route we
have taken.
> The NFS server is a high-quality dedicated machine (Net App, EMC,
> etc.)
We've had great success with just using SMP Linux servers. We do have
one EMC IP4700 in production, and it's a nice system, but I prefer the
Linux based alternative.
> Linux clients can use TCP instead of UDP.
Although I haven't had problems with this in our lab, I believe the NFS
authors still consider this experimental.
--
-[========================]-
-[ Brian Tinsley ]-
-[ Chief Systems Engineer ]-
-[ Emageon ]-
-[========================]-
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
NFS maillist - NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs
^ permalink raw reply
* [Bug fix] delete kobject from list when kobject_add() fail
From: louis.zhuang @ 2003-01-10 9:30 UTC (permalink / raw)
To: mochel; +Cc: linux-kernel
Dear Mochel,
I found there were still issues in failed kobject_add(). For example,
if you try to register two kobjects with the same name into
subsystem, the second registration will fail but the second will keep in
the list of subsystem. Below patch might fix the bug. Please apply.
Yours truly,
Louis Zhuang
---------------
Fault Injection Test Harness Project
BK tree: http://fault-injection.bkbits.net/linux-2.5
Home Page: http://sf.net/projects/fault-injection
You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual.
===================================================================
ChangeSet@1.944, 2003-01-10 16:45:01+08:00, louis@hawk.sh.intel.com
delete kobject from list when kobject_add() fail.
caller have no way to clean the list, so
kobjec_add() should remove kobject from list.
kobject.c | 26 ++++++++++++++++----------
1 files changed, 16 insertions(+), 10 deletions(-)
diff -Nru a/lib/kobject.c b/lib/kobject.c
--- a/lib/kobject.c Fri Jan 10 16:48:01 2003
+++ b/lib/kobject.c Fri Jan 10 16:48:01 2003
@@ -66,6 +66,18 @@
return container_of(entry,struct kobject,entry);
}
+static inline void __kobject_del(struct kobject * kobj)
+{
+ if (kobj->kset) {
+ down_write(&kobj->kset->subsys->rwsem);
+ list_del_init(&kobj->entry);
+ up_write(&kobj->kset->subsys->rwsem);
+ }
+ if (kobj->parent)
+ kobject_put(kobj->parent);
+ kobject_put(kobj);
+}
+
/**
* kobject_init - initialize object.
@@ -109,8 +121,8 @@
up_write(&kobj->kset->subsys->rwsem);
}
error = create_dir(kobj);
- if (error && parent)
- kobject_put(parent);
+ if (error)
+ __kobject_del(kobj);
return error;
}
@@ -132,6 +144,7 @@
return error;
}
+
/**
* kobject_del - unlink kobject from hierarchy.
* @kobj: object.
@@ -140,14 +153,7 @@
void kobject_del(struct kobject * kobj)
{
sysfs_remove_dir(kobj);
- if (kobj->kset) {
- down_write(&kobj->kset->subsys->rwsem);
- list_del_init(&kobj->entry);
- up_write(&kobj->kset->subsys->rwsem);
- }
- if (kobj->parent)
- kobject_put(kobj->parent);
- kobject_put(kobj);
+ __kobject_del(kobj);
}
/**
===================================================================
This BitKeeper patch contains the following changesets:
1.944
## Wrapped with gzip_uu ##
begin 664 bkpatch20054
M'XL(`,&('CX``^5576_3,!1]KG_%E2:AEI'T.H[;-%.KP89@`HEI:&](E9<X
M2V@:5[;3JB+[[[CINE$V&*"]D41*['ONN5\GR0%<&JGC3JGJPI`#>*^,C3NY
M6,U\D_M%967I)VKN+!=*.4L_5W/9;]']P.>>69O,$&<^%S;)82FUB3O49W<[
M=KV0<>?B[;O+CZ\O"!F/X207U;7\+"V,Q\0JO11E:HZ%S4M5^5:+RLRE%9NH
MS1VT"1`#=W(Z9,@'#1U@.&P2FE(J0BI3#,)H$-ZS+61U71>_I6-(<10P&@78
MA!PQ(J=`_5$8`K(^TCY%H(,XY#'20XQB1&BK/G[0&SBDX"%Y`\];RPE)()6E
MM!)FZNJK3"QDVD4K"V-AE<MJMST5:=KM02:*TG<^`(DH2ZDA%TL)E8*56+O4
M("FEJ,#FLF5X!49!B]ZRW)*87-5E"EK.U?*1N#X`^0`A'[K\SN\'2;R_/`A!
M@60"<Y7DLCQ6)BU]I:^;LKCJWP;UD[9/U,T)*1UAV"`?<=:P(,MH@$)@%&'*
MLU]-Y2&7&SAU8PX9QX;3$0];->[!-HI\AIR>YMB(;X@L0#9RXF,CUHJ/\GWM
ML9CCD]H;@$?_)_5M1_<)/+UJ+Z>F\_TI_H,<SP81T(`8*VR10%&5125AJ8H4
MIM-=H:X=76-U[5+:I?:R?>J1;Z139-#=++S)S$C;`[?52=6JFJYT867WQ;W-
MFYCZRGTWO8E>&3GO'3GDIKQ-@&E1%78'EI75Z]9<+_Z(YN;'-!9".X(>./==
M!8O:[AN=S\^VWE&'W)`OY)32``)R1BESMY97:JUTS_'M]V3KY9`L!-IZA@PB
AM^9.Q>1Q\-WOP;TGR<S4\[$(Y"#-$D:^`R/H1DJ2!@``
`
end
^ permalink raw reply
* Re: 2.4.20 stability issues
From: Brian May @ 2003-01-10 9:24 UTC (permalink / raw)
To: Russell Coker; +Cc: selinux
In-Reply-To: <200301100957.07668.russell@coker.com.au>
On Fri, Jan 10, 2003 at 09:57:07AM +0100, Russell Coker wrote:
> rjc@lyta:/tmp$ uname -a
> Linux lyta 2.4.20-se-r #1 Mon Dec 16 19:48:46 CET 2002 i686 unknown unknown
> GNU/Linux
> rjc@lyta:/tmp$ uptime
> 09:52:14 up 4 days, 9:11, 1 user, load average: 0.88, 1.33, 0.90
> rjc@lyta:/tmp$
Interesting; maybe it is one of my patches.
(it has happened before, a bug for instance in the ACL patch would crash
the computer even when just fscking the filesystem).
Although 4 days may not be long enough to reproduce the bug, not
sure on this.
It was also sometime last year that my Thinkpad totally died (after
random crashes), and needed a new motherboard, I am keeping my fingers
crossed that it isn't the same problem.
--
Brian May <bam@snoopy.apana.org.au>
--
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
* Re: VIA8233/8235 testers wanted
From: Takashi Iwai @ 2003-01-10 9:27 UTC (permalink / raw)
To: Joachim Blaabjerg; +Cc: alsa-devel
In-Reply-To: <200301101013.58151.styx@gentoo.org>
At Fri, 10 Jan 2003 10:13:58 +0100,
Joachim Blaabjerg wrote:
>
> On Friday 10 January 2003 09:37, Takashi Iwai wrote:
> > At Fri, 10 Jan 2003 09:17:28 +0100,
> >
> > Joachim Blaabjerg wrote:
> > > On Thursday 09 January 2003 18:01, Takashi Iwai wrote:
> > > > Hi,
> > > >
> > > > if someone has VIA8233, VIA8233A, VIA8233C or VIA8235 chipset, could
> > > > you help the testing of the new driver?
> > > > the new driver code is found at
> > > >
> > > > http://www.alsa-project.org/~iwai/via82xx.c
> > > > [...]
> > >
> > > I'm getting an unresolved symbol: snd_pcm_substream_sgbuf, and a
> > > recursive grep in the alsa-driver sources show only one match in, you
> > > guessed it, snd-via82xx.c.
> >
> > please try the very latest cvs version.
> > (the best is to get the source via cvs, not cvs-snapshot).
> > there are many changes recently.
>
> Ah yes, thanks.
>
> It compiles and loads nicely, but there are some problems using it. I tried
> starting UT2003 while XMMS was playing, and there was indeed sound from both,
> but the UT2003 sound was quite choppy. When I exited UT2003, the last sound
> it played is still there, and plays over and over again (ut2003-bin hangs). I
> get the following warning from ALSA:
>
> ALSA lib pcm_hw.c:398:(snd_pcm_hw_prepare) SNDRV_PCM_IOCTL_PREPARE failed:
> Device or resource busy
>
> I figured UT2003 and its sound system was probably rather weird, so I tried
> again with mpg231 and mplayer, which worked beautifully. Thanks! :)
>
> Btw, this is a VT-8235 sound chip.
there are small bugs regarding the calculation of hw-pointer.
i hope now this choppy sounds fixed. could you try to grab via82xx.c
again from the same url?
the error shown above is perhaps because the applications tried to set
up the different sample rates at the same time.
since the sample rate is configured on ac97 codec, the sample rate
must be identical among all applications playing simultaneously.
also, there is the secondary pcm device (hw:0,1) for the multi-channel
playback, i.e. 4 and 6-channel playback. if your board has rear or
center/lfe jacks, please give a try.
i guess this is exclusive with the first device, but not sure. please
check whether both twos can play at the same time.
ah, one more thing. via8235 has the secondary capture device. it's
assigned to hw:0,1. it would be helpful if you can check both hw:0,0
and hw:0,1 can capture properly, or whether only one of them works.
ciao,
Takashi
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
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.