diff options
author | Jani Nikula <ext-jani.1.nikula@nokia.com> | 2010-03-18 05:32:05 -0400 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@nokia.com> | 2010-05-18 07:14:29 -0400 |
commit | 238a41329ca208d1170962260babb428b6e222c2 (patch) | |
tree | c437064cad869fd67fe44c7965893494a6daf407 | |
parent | 508886cf98c81cee73cd75943b3d0039801327ab (diff) |
OMAP: DSS2: fix lock_fb_info() and omapfb_lock() locking order
Framebuffer ioctl processing forces lock_fb_info() -> omapfb_lock()
locking order. Follow that order to avoid possible circular locking
dependency, detected by lockdep.
Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
-rw-r--r-- | drivers/video/omap2/omapfb/omapfb-ioctl.c | 4 | ||||
-rw-r--r-- | drivers/video/omap2/omapfb/omapfb-sysfs.c | 8 |
2 files changed, 6 insertions, 6 deletions
diff --git a/drivers/video/omap2/omapfb/omapfb-ioctl.c b/drivers/video/omap2/omapfb/omapfb-ioctl.c index 1ffa760b8545..2c0f01c44aab 100644 --- a/drivers/video/omap2/omapfb/omapfb-ioctl.c +++ b/drivers/video/omap2/omapfb/omapfb-ioctl.c | |||
@@ -183,13 +183,13 @@ int omapfb_update_window(struct fb_info *fbi, | |||
183 | struct omapfb2_device *fbdev = ofbi->fbdev; | 183 | struct omapfb2_device *fbdev = ofbi->fbdev; |
184 | int r; | 184 | int r; |
185 | 185 | ||
186 | omapfb_lock(fbdev); | ||
187 | lock_fb_info(fbi); | 186 | lock_fb_info(fbi); |
187 | omapfb_lock(fbdev); | ||
188 | 188 | ||
189 | r = omapfb_update_window_nolock(fbi, x, y, w, h); | 189 | r = omapfb_update_window_nolock(fbi, x, y, w, h); |
190 | 190 | ||
191 | unlock_fb_info(fbi); | ||
192 | omapfb_unlock(fbdev); | 191 | omapfb_unlock(fbdev); |
192 | unlock_fb_info(fbi); | ||
193 | 193 | ||
194 | return r; | 194 | return r; |
195 | } | 195 | } |
diff --git a/drivers/video/omap2/omapfb/omapfb-sysfs.c b/drivers/video/omap2/omapfb/omapfb-sysfs.c index 62bb88f5c192..e10445017985 100644 --- a/drivers/video/omap2/omapfb/omapfb-sysfs.c +++ b/drivers/video/omap2/omapfb/omapfb-sysfs.c | |||
@@ -137,8 +137,8 @@ static ssize_t show_overlays(struct device *dev, | |||
137 | ssize_t l = 0; | 137 | ssize_t l = 0; |
138 | int t; | 138 | int t; |
139 | 139 | ||
140 | omapfb_lock(fbdev); | ||
141 | lock_fb_info(fbi); | 140 | lock_fb_info(fbi); |
141 | omapfb_lock(fbdev); | ||
142 | 142 | ||
143 | for (t = 0; t < ofbi->num_overlays; t++) { | 143 | for (t = 0; t < ofbi->num_overlays; t++) { |
144 | struct omap_overlay *ovl = ofbi->overlays[t]; | 144 | struct omap_overlay *ovl = ofbi->overlays[t]; |
@@ -154,8 +154,8 @@ static ssize_t show_overlays(struct device *dev, | |||
154 | 154 | ||
155 | l += snprintf(buf + l, PAGE_SIZE - l, "\n"); | 155 | l += snprintf(buf + l, PAGE_SIZE - l, "\n"); |
156 | 156 | ||
157 | unlock_fb_info(fbi); | ||
158 | omapfb_unlock(fbdev); | 157 | omapfb_unlock(fbdev); |
158 | unlock_fb_info(fbi); | ||
159 | 159 | ||
160 | return l; | 160 | return l; |
161 | } | 161 | } |
@@ -195,8 +195,8 @@ static ssize_t store_overlays(struct device *dev, struct device_attribute *attr, | |||
195 | if (buf[len - 1] == '\n') | 195 | if (buf[len - 1] == '\n') |
196 | len = len - 1; | 196 | len = len - 1; |
197 | 197 | ||
198 | omapfb_lock(fbdev); | ||
199 | lock_fb_info(fbi); | 198 | lock_fb_info(fbi); |
199 | omapfb_lock(fbdev); | ||
200 | 200 | ||
201 | if (len > 0) { | 201 | if (len > 0) { |
202 | char *p = (char *)buf; | 202 | char *p = (char *)buf; |
@@ -303,8 +303,8 @@ static ssize_t store_overlays(struct device *dev, struct device_attribute *attr, | |||
303 | 303 | ||
304 | r = count; | 304 | r = count; |
305 | out: | 305 | out: |
306 | unlock_fb_info(fbi); | ||
307 | omapfb_unlock(fbdev); | 306 | omapfb_unlock(fbdev); |
307 | unlock_fb_info(fbi); | ||
308 | 308 | ||
309 | return r; | 309 | return r; |
310 | } | 310 | } |