All of lore.kernel.org
 help / color / mirror / Atom feed
* locking inconsistency, when calling fb_ops::fb_release()
@ 2010-09-13  7:17 Guennadi Liakhovetski
  2010-09-13 15:30 ` Greg KH
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Guennadi Liakhovetski @ 2010-09-13  7:17 UTC (permalink / raw)
  To: linux-fbdev

Hi

I do not know, whether this can be a problem for any existing driver, but 
such an inconsistency seems like a bad idea to me anyway. The struct 
fb_ops::fb_release() method can be called in following ways:

fbmem.c::fb_release() under the info->lock mutex (file.close("/dev/fbX") 
							operation)
fbcon.c::con2fb_release_oldinfo() under console semaphore
fbcon.c::fbcon_exit() from
	fbcon_deinit() from
		vt.c::vc_deallocate() under console semaphore (has 
			WARN_CONSOLE_UNLOCKED())
		bind_con_driver() under console semaphore
	fb_console_exit() under console semaphore

I.e., it can be either called within an acquire_console_sem() / 
release_console_sem() block, or within a mutex_lock(&info->lock) / 
mutex_unlock(&info->lock) block, which looks inconsistent to me.

The problem, this is causing me is, that I'd like to call the framebuffer 
notifier chain from my driver's fb_release() method. That chain has to be 
called under a console semaphore. So, I either have to rely on the caller 
holding the semaphore, or take it myself, none of which is possible due to 
the above inconsistency. Same holds for the info->lock mutex - you cannot 
rely on it being help and you cannot take it yourself... I believe, the 
same holds for fb_ops::fb_open(). Is this a featuer or a bug? If the 
latter - how best to fix it? If the former - how do I solve my problem?

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2010-09-14 13:08 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-13  7:17 locking inconsistency, when calling fb_ops::fb_release() Guennadi Liakhovetski
2010-09-13 15:30 ` Greg KH
2010-09-13 16:06 ` Guennadi Liakhovetski
2010-09-13 17:13 ` Greg KH
2010-09-14 13:08 ` Guennadi Liakhovetski

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.