aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJani Nikula <ext-jani.1.nikula@nokia.com>2010-03-18 05:32:05 -0400
committerTomi Valkeinen <tomi.valkeinen@nokia.com>2010-05-18 07:14:29 -0400
commit238a41329ca208d1170962260babb428b6e222c2 (patch)
treec437064cad869fd67fe44c7965893494a6daf407
parent508886cf98c81cee73cd75943b3d0039801327ab (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.c4
-rw-r--r--drivers/video/omap2/omapfb/omapfb-sysfs.c8
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;
305out: 305out:
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}