diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-07-03 02:45:56 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-07-04 13:39:06 -0400 |
commit | f50bf2b2f5e83b794e0bdb2f3f589f55ef0d52d0 (patch) | |
tree | 01020b4eaa2df173889ebcfb71f7dc02097dede6 /drivers/video/sm501fb.c | |
parent | de481ba925e880764e38b8756c93c05006892507 (diff) |
video: sm501fb: Early initialization of mm_lock mutex.
Commit 537a1bf059fa312355696fa6db80726e655e7f17 (fbdev: add mutex for
fb_mmap locking) introduces a ->mm_lock mutex for protecting smem
assignments. Unfortunately in the case of sm501fb these happen quite
early in the initialization code, well before the mutex_init() that takes
place in register_framebuffer(), leading to:
Badness at kernel/mutex.c:207
Pid : 1, Comm: swapper
CPU : 0 Not tainted (2.6.31-rc1-00284-g529ba0d-dirty #2273)
PC is at __mutex_lock_slowpath+0x72/0x1bc
PR is at __mutex_lock_slowpath+0x66/0x1bc
...
matroxfb appears to have the same issue and has solved it with an early
mutex_init(), so we do the same for sm501fb.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Cc: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/video/sm501fb.c')
-rw-r--r-- | drivers/video/sm501fb.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/video/sm501fb.c b/drivers/video/sm501fb.c index 98f24f0ec00d..16d4f4c7d52b 100644 --- a/drivers/video/sm501fb.c +++ b/drivers/video/sm501fb.c | |||
@@ -1624,6 +1624,8 @@ static int __devinit sm501fb_start_one(struct sm501fb_info *info, | |||
1624 | if (!fbi) | 1624 | if (!fbi) |
1625 | return 0; | 1625 | return 0; |
1626 | 1626 | ||
1627 | mutex_init(&info->fb[head]->mm_lock); | ||
1628 | |||
1627 | ret = sm501fb_init_fb(info->fb[head], head, drvname); | 1629 | ret = sm501fb_init_fb(info->fb[head], head, drvname); |
1628 | if (ret) { | 1630 | if (ret) { |
1629 | dev_err(info->dev, "cannot initialise fb %s\n", drvname); | 1631 | dev_err(info->dev, "cannot initialise fb %s\n", drvname); |