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

Attachment: patches.gz
Description: GNU Zip compressed data

Reply via email to