All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wu Zhangjin <wuzhangjin@gmail.com>
To: Daniel Mack <daniel@caiaq.de>
Cc: linux-arm-kernel@lists.arm.linux.org.uk,
	linux-kernel@vger.kernel.org,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	"Rafael J. Wysocki" <rjw@sisk.pl>,
	stable@kernel.org, Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH] fb: move mutex_init to framebuffer_alloc()
Date: Wed, 08 Jul 2009 17:42:25 +0800	[thread overview]
Message-ID: <1247046145.22324.12.camel@falcon> (raw)
In-Reply-To: <1246465606-29346-1-git-send-email-daniel@caiaq.de>

On Wed, 2009-07-01 at 18:26 +0200, Daniel Mack wrote:
> In 537a1bf05, a per-fbinfo mutex was added and framebuffer drivers were
> adopted accordingly. This new lock is currently initialized in
> register_framebuffer().
> 
> The mx3fb driver takes this lock in mx3fb_map_video_memory() _before_
> register_framebuffer() is called and hence crashes the system very
> early.
> 
> Moving this mutex_init() to framebuffer_alloc() solves this and also
> seems a lot more straight forward.
> 

but this may introduce deadlock to some _old_ drivers which have not
used framebuffer_alloc to allocate fb_info structure.

to avoid deadlock, these drivers need to change kmalloc to
framebuffer_alloc, otherwise, they need to add their own mutexes
initialization source code:
		mutex_init(&info->lock);	mutex_init(&info->mm_lock);

here is only a record for the _old_ drivers' maintainers. hope they can
get this info from google or find this commit: 

commit 4148df9b0f38bdd362dd91d52076926c11cbe5a9
Author: Paul Mundt <lethal@linux-sh.org>
Date:   Mon Jul 6 00:25:57 2009 +0900

    fb: Initialize fb_info mutexes in framebuffer_alloc()
    
    This way they'll be properly initialized early enough for users that
may
    touch them before the framebuffer has been registered.
    
    Drivers that allocate their fb_info structure some other way (like
    matrocfb's broken static allocation) need to be fixed up
appropriately.
    
    Signed-off-by: Paul Mundt <lethal@linux-sh.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Regards,
Wu Zhangjin

> Signed-off-by: Daniel Mack <daniel@caiaq.de>
> Cc:: Krzysztof Helt <krzysztof.h1@wp.pl>
> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
> Cc: Rafael J. Wysocki <rjw@sisk.pl>
> Cc: <stable@kernel.org>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> ---
>  drivers/video/fbmem.c   |    3 ---
>  drivers/video/fbsysfs.c |    3 +++
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
> index 53ea056..1d8d098 100644
> --- a/drivers/video/fbmem.c
> +++ b/drivers/video/fbmem.c
> @@ -1513,9 +1513,6 @@ register_framebuffer(struct fb_info *fb_info)
>  		if (!registered_fb[i])
>  			break;
>  	fb_info->node = i;
> -	mutex_init(&fb_info->lock);
> -	mutex_init(&fb_info->mm_lock);
> -
>  	fb_info->dev = device_create(fb_class, fb_info->device,
>  				     MKDEV(FB_MAJOR, i), NULL, "fb%d", i);
>  	if (IS_ERR(fb_info->dev)) {
> diff --git a/drivers/video/fbsysfs.c b/drivers/video/fbsysfs.c
> index d4a2c11..60ddd1d 100644
> --- a/drivers/video/fbsysfs.c
> +++ b/drivers/video/fbsysfs.c
> @@ -58,6 +58,9 @@ struct fb_info *framebuffer_alloc(size_t size, struct device *dev)
>  
>  	info->device = dev;
>  
> +	mutex_init(&info->lock);
> +	mutex_init(&info->mm_lock);
> +
>  #ifdef CONFIG_FB_BACKLIGHT
>  	mutex_init(&info->bl_curve_mutex);
>  #endif


  reply	other threads:[~2009-07-08  9:48 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-01 16:26 [PATCH] fb: move mutex_init to framebuffer_alloc() Daniel Mack
2009-07-08  9:42 ` Wu Zhangjin [this message]
2009-07-08  9:52   ` Paul Mundt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1247046145.22324.12.camel@falcon \
    --to=wuzhangjin@gmail.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=akpm@linux-foundation.org \
    --cc=daniel@caiaq.de \
    --cc=linux-arm-kernel@lists.arm.linux.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rjw@sisk.pl \
    --cc=stable@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.