race in oklinux/contrib/arch/l4/kernel/sys_genode.c

Sven Fülster mx at ...19...
Wed Feb 17 10:03:20 CET 2010


Hi all,

you have a race condition in oklinux/contrib/arch/l4/kernel/sys_genode.c 
resp. oklx_genode.patch lines 1894..1905

#ifdef CONFIG_FB_GENODE
+        if(genode_input_initialized())
+        {
+            /* Put the input events into our framebuffer driver */
+            num = genode_input_flush();
+            for(i=0;i<num;i++) {
+                genode_input_event(i, genode_fb_mouse_event, 
genode_fb_key_event);
+            }
+        }
+#endif //CONFIG_FB_GENODE
+
+        genode_lock(timer_main_kernel_lock);

which shows up under heavy load (freezing Xfbdev, raising some BUG()s or 
a pagefault in update_stats_wait_end).

Moving the input polling into the critical section solved the problem here:

+        genode_lock(timer_main_kernel_lock);
+
#ifdef CONFIG_FB_GENODE
+        if(genode_input_initialized())
+        {
+            /* Put the input events into our framebuffer driver */
+            num = genode_input_flush();
+            for(i=0;i<num;i++) {
+                genode_input_event(i, genode_fb_mouse_event, 
genode_fb_key_event);
+            }
+        }
+#endif //CONFIG_FB_GENODE


Cheers

Sven
--
Sven Fülster




More information about the users mailing list