I have attached a couple of patches for LiS-2.17.K running on SuSE Linux 9.1.
-----------------------------------
The first patch, patch1.LiS, removes the static modifier from the lis_xxx_cachep
variables so LiS compiles in production mode, i.e. USE_KMEM_CACHE=y and
USE_LINUX_KMEM_TIMER=y
If the patch is not applied, the following error occurs when loading LiS in production
mode:
streams: Unknown symbol lis_queue_cachep
streams: Unknown symbol lis_head_cachep
streams: Unknown symbol lis_qsync_cachep
streams: Unknown symbol lis_timer_cachep
streams: Unknown symbol lis_qband_cachep
-----------------------------------
The next patch, patch2.LiS is a nice to have. LiS failed to load and crashed in
lis_printk so I first created this patch for a better compile time check of the format
string and the arguments with the printf like family of functions.
It was not the reason for the crash mentioned above, but nevertheless it shows us a
lot of compiler warnings we can fix to improve the code, which I did with the next
patches.
-----------------------------------
The next and last patches, patch3.LiS - patch6.LiS just fix the compiler warnings we
get when applying patch2.LiS.
-----------------------------------
Anyway, the crash which led to patch2.LiS had nothing to do with the missing or wrong
format arguments, the reason for the crash is the CONFIG_REGPARM option SuSE enabled
when building the default kernel. With CONFIG_REGPARM=y the kernel and the kernel
modules are compiled with the compiler option "-mregparm=3", with which the first
three arguments of a function call are passed in registers. With this option set in
the kernel, LiS needs to be compiled with the same compiler option (kernel space only,
not the user space utilities).
I haven't had time to create a patch for this, but I think we will need to introduce a
new Makefile macro KOPTS in addition to XOPTS to distinguish between kernel and
general compiler options.
If CONFIG_REGPARM=y and LiS is not compiled with the compiler options "-mregparm=3",
the following error occurs:
Unable to handle kernel NULL pointer dereference at virtual address 00000000
printing eip:
c01dcee9
*pde = 00000000
Oops: 0000 [#1]
CPU: 0
EIP: 0060:[<c01dcee9>] Tainted: GF
EFLAGS: 00010213 (2.6.4-52-default)
EIP is at vsnprintf+0x39/0x510
eax: c8b16413 ebx: c0341da8 ecx: 00000000 edx: 374e9bec
esi: c8b16414 edi: c0341d98 ebp: ffffffff esp: c1e2fdfc
ds: 007b es: 007b ss: 0068
Process modprobe (pid: 2642, threadinfo=c1e2e000 task=c07b6690)
Stack: 00000092 ffffffff c03424f8 374e9bec c8b16414 00000000 c0341da8 c8b31800
c0341d98 c0341d98 c01dd3cd c0341da8 c8b0e495 c8baba00 c8b16414 c1e2fe48
c0341da8 c8b03b5b c8b16414 c0341da8 c0132305 00000000 c8abcb14 c8abcb14
Call Trace:
[<c01dd3cd>] vsprintf+0xd/0x10
[<c8b0e495>] lis_printk+0x15/0x30 [streams]
[<c8b03b5b>] lis_init_module+0xb/0x190 [streams]
[<c0132305>] sys_init_module+0x105/0x15b0
[<c010a895>] do_IRQ+0x115/0x170
[<c0108d48>] common_interrupt+0x18/0x20
[<c010e3dd>] do_mmap2+0x6d/0xa0
[<c010e3ff>] do_mmap2+0x8f/0xa0
[<c0107dc9>] sysenter_past_esp+0x52/0x79
Code: 80 39 00 75 1a eb 40 39 ee 77 06 88 06 8b 4c 24 14 46 89 c8
-----------------------------------
LiS now loads but loop-around fails to create it's device nodes, maybe someone else
has fixed this already. I will investigate further.
Best regards,
Steffen
_____________________________________________________________________
Endlich SMS mit Bildern versenden! Das Bild selbst ist dabei gratis,
Sie bezahlen lediglich den Versand. http://freemail.web.de/?mc=021195
patches.gz
Description: GNU Zip compressed data
