Skip to contentSkip to conversation

post-2.6.3 build error

uml-devel Gerd Knorr 2 participants 5 messages Feb 23, 2004 – Feb 26, 2004

Subsystems (3)
lore
Share & tools
lore

Gerd Knorr

author
#0 lore raw

Hi,

You might have noticed already that in latest linus tree um doesn't build any more. The reason is that sys_sched_setscheduler() is declared now in linux/sched.h, which conflicts with the declaration in arch/um/kernel/sys_call_table.c. As quick+dirty fix I've just commented the declaration. It builds now, but gives a warning (which is harmless I think as the exact type of the function shouldn't matter for the syscall table). Anyone has a better/cleaner fix for that?

Gerd

arch/um/kernel/sys_call_table.c renamed from arch/um/kernel/sys_call_table.c~ +1 -1
@@ -151,7 +151,7 @@
 extern syscall_handler_t sys_munlockall;
 extern syscall_handler_t sys_sched_setparam;
 extern syscall_handler_t sys_sched_getparam;
-extern syscall_handler_t sys_sched_setscheduler;
+//extern syscall_handler_t sys_sched_setscheduler;
 extern syscall_handler_t sys_sched_getscheduler;
 extern syscall_handler_t sys_sched_get_priority_max;
 extern syscall_handler_t sys_sched_get_priority_min;

-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps & Web services for Linux with a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
User-mode-linux-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

#1 lore raw

Alle 18:20, lunedì 23 febbraio 2004, Gerd Knorr ha scritto:

Quoted 9 lines

Hi,

You might have noticed already that in latest linus tree um doesn't build any more. The reason is that sys_sched_setscheduler() is declared now in linux/sched.h, which conflicts with the declaration in arch/um/kernel/sys_call_table.c. As quick+dirty fix I've just commented the declaration. It builds now, but gives a warning (which is harmless I think as the exact type of the function shouldn't matter for the syscall table). Anyone has a better/cleaner fix for that?

I agree that it's harmless (you can add a typecast as it is done for other functions there). By the way (unrelated) you could maybe remove include "linux/sys.h" since it claims to be unused.

Nothing cleaner since avoiding the inclusion of sched.h is impossible. And this is the fix used for similar cases in that file.

Also, please fix this line:

__NR_sched_yield ] = (syscall_handler_t *) yield

It should refer to sys_sched_yield. yield() is not even asmlinkage, so this could case serious problems, and it is commented as "for kernel usage". Also I checked i386 syscall table, and it uses sys_sched_yield.

Bye

Signature · 14 lines
Paolo Giarrusso, aka Blaisorblade
Linux registered user n. 292729



-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id56&alloc_id438&opÌk
_______________________________________________
User-mode-linux-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
author
#2 lore raw
Quoted 5 lines · BlaisorBlade

__NR_sched_yield ] = (syscall_handler_t *) yield

It should refer to sys_sched_yield. yield() is not even asmlinkage, so this could case serious problems, and it is commented as "for kernel usage". Also I checked i386 syscall table, and it uses sys_sched_yield.

There is another related one (asmlinkage where it shouldn't be) in mprotect.c. With the new CONFIG_REGPARM config option it becomes really important to get that right ...

Gerd

mm/mprotect.c +1 -1
Index: linux-2.6.3/mm/mprotect.c
===================================================================
@@ -221,7 +221,7 @@ fail:
 	return error;
 }
 
-asmlinkage long
+long
 do_mprotect(struct mm_struct *mm, unsigned long start, size_t len, 
 	     unsigned long prot)
 {

-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps & Web services for Linux with a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
User-mode-linux-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

#3 lore raw

Alle 22:12, mercoledì 25 febbraio 2004, Gerd Knorr ha scritto:

Quoted 9 lines
Quoted 5 lines · BlaisorBlade

__NR_sched_yield ] = (syscall_handler_t *) yield

It should refer to sys_sched_yield. yield() is not even asmlinkage, so this could case serious problems, and it is commented as "for kernel usage". Also I checked i386 syscall table, and it uses sys_sched_yield.

There is another related one (asmlinkage where it shouldn't be) in mprotect.c.

Good catch.

Quoted 2 lines

With the new CONFIG_REGPARM config option it becomes really important to get that right ...

Yes, however I think that one asmlinkage more is not very bad (old convention used where the call can be optimized), but that a missing asmlinkage could be crashy. At least until the prototype is correct; I just noticed that do_mprotect is protoized without asmlinkage - and this can be actually crashy. Luckily CONFIG_REGPARM is not in the stock kernel.

If it were, that could have explained some Skas-2.6 crashes which can be seen here (there is already one BUG hit which explains it in part, see here: "Host 2.6.2/3 + CFQ + BlaisorBlade patches"... but on one kernel it Oopsed and on another it crashed, so there could be something else).

Signature · 14 lines
Paolo Giarrusso, aka Blaisorblade
Linux registered user n. 292729



-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id56&alloc_id438&opÌk
_______________________________________________
User-mode-linux-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
author
#4 lore raw
Quoted 1 line · BlaisorBlade

crashy. Luckily CONFIG_REGPARM is not in the stock kernel.

It is in Linus' bk tree, so 2.6.4 will have that ...

Gerd

-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps & Web services for Linux with a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
User-mode-linux-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel