Re: [BK FBDEV] A few more updates.

Benjamin Herrenschmidt
2003-03-25T18:19:23Z

On Tue, 2003-03-25 at 19:32, James Simmons wrote:
> Linus, please do a
>
> bk pull http://fbdev.bkbits.net/fbdev-2.5
>
> This will update the following files:
>
> drivers/video/aty/aty128fb.c | 16 +++++++---------
> drivers/video/console/fbcon.c | 4 ++--
> drivers/video/controlfb.c | 18 +++---------------
> drivers/video/platinumfb.c | 28 ++++++++--------------------
> drivers/video/radeonfb.c | 10 ++++++++++
> drivers/video/softcursor.c | 2 +-
> 6 files changed, 31 insertions(+), 47 deletions(-)
>
> through these ChangeSets:
>
> <jsimmons@maxwell.earthlink.net> (03/03/25 1.981)
> [FBCON] Could be called outside of a process context. This fixes that.

You "fixed" it by using GFP_ATOMIC but didn't test the result of
kmalloc. That is very bad. GFP_ATOMIC can fail (return NULL), thus
you will crash the kernel under high memory pressure.

I think the proper fix is, as you asked me, using a workqueue,
that way, you can both use GFP_KERNEL allocations, and avoid
the spinlock you added to fbmem.c, thus letting the fb_sync()
ops on fbdev's be able to block.

Ben.