@@ -1099,14 +1099,16 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
1099
1099
case FBIOPUT_VSCREENINFO :
1100
1100
if (copy_from_user (& var , argp , sizeof (var )))
1101
1101
return - EFAULT ;
1102
- if (!lock_fb_info (info ))
1103
- return - ENODEV ;
1104
1102
console_lock ();
1103
+ if (!lock_fb_info (info )) {
1104
+ console_unlock ();
1105
+ return - ENODEV ;
1106
+ }
1105
1107
info -> flags |= FBINFO_MISC_USEREVENT ;
1106
1108
ret = fb_set_var (info , & var );
1107
1109
info -> flags &= ~FBINFO_MISC_USEREVENT ;
1108
- console_unlock ();
1109
1110
unlock_fb_info (info );
1111
+ console_unlock ();
1110
1112
if (!ret && copy_to_user (argp , & var , sizeof (var )))
1111
1113
ret = - EFAULT ;
1112
1114
break ;
@@ -1135,12 +1137,14 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
1135
1137
case FBIOPAN_DISPLAY :
1136
1138
if (copy_from_user (& var , argp , sizeof (var )))
1137
1139
return - EFAULT ;
1138
- if (!lock_fb_info (info ))
1139
- return - ENODEV ;
1140
1140
console_lock ();
1141
+ if (!lock_fb_info (info )) {
1142
+ console_unlock ();
1143
+ return - ENODEV ;
1144
+ }
1141
1145
ret = fb_pan_display (info , & var );
1142
- console_unlock ();
1143
1146
unlock_fb_info (info );
1147
+ console_unlock ();
1144
1148
if (ret == 0 && copy_to_user (argp , & var , sizeof (var )))
1145
1149
return - EFAULT ;
1146
1150
break ;
@@ -1175,23 +1179,27 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
1175
1179
break ;
1176
1180
}
1177
1181
event .data = & con2fb ;
1178
- if (!lock_fb_info (info ))
1179
- return - ENODEV ;
1180
1182
console_lock ();
1183
+ if (!lock_fb_info (info )) {
1184
+ console_unlock ();
1185
+ return - ENODEV ;
1186
+ }
1181
1187
event .info = info ;
1182
1188
ret = fb_notifier_call_chain (FB_EVENT_SET_CONSOLE_MAP , & event );
1183
- console_unlock ();
1184
1189
unlock_fb_info (info );
1190
+ console_unlock ();
1185
1191
break ;
1186
1192
case FBIOBLANK :
1187
- if (!lock_fb_info (info ))
1188
- return - ENODEV ;
1189
1193
console_lock ();
1194
+ if (!lock_fb_info (info )) {
1195
+ console_unlock ();
1196
+ return - ENODEV ;
1197
+ }
1190
1198
info -> flags |= FBINFO_MISC_USEREVENT ;
1191
1199
ret = fb_blank (info , arg );
1192
1200
info -> flags &= ~FBINFO_MISC_USEREVENT ;
1193
- console_unlock ();
1194
1201
unlock_fb_info (info );
1202
+ console_unlock ();
1195
1203
break ;
1196
1204
default :
1197
1205
if (!lock_fb_info (info ))
@@ -1649,12 +1657,15 @@ static int do_register_framebuffer(struct fb_info *fb_info)
1649
1657
registered_fb [i ] = fb_info ;
1650
1658
1651
1659
event .info = fb_info ;
1652
- if (!lock_fb_info (fb_info ))
1653
- return - ENODEV ;
1654
1660
console_lock ();
1661
+ if (!lock_fb_info (fb_info )) {
1662
+ console_unlock ();
1663
+ return - ENODEV ;
1664
+ }
1665
+
1655
1666
fb_notifier_call_chain (FB_EVENT_FB_REGISTERED , & event );
1656
- console_unlock ();
1657
1667
unlock_fb_info (fb_info );
1668
+ console_unlock ();
1658
1669
return 0 ;
1659
1670
}
1660
1671
@@ -1667,13 +1678,16 @@ static int do_unregister_framebuffer(struct fb_info *fb_info)
1667
1678
if (i < 0 || i >= FB_MAX || registered_fb [i ] != fb_info )
1668
1679
return - EINVAL ;
1669
1680
1670
- if (!lock_fb_info (fb_info ))
1671
- return - ENODEV ;
1672
1681
console_lock ();
1682
+ if (!lock_fb_info (fb_info )) {
1683
+ console_unlock ();
1684
+ return - ENODEV ;
1685
+ }
1686
+
1673
1687
event .info = fb_info ;
1674
1688
ret = fb_notifier_call_chain (FB_EVENT_FB_UNBIND , & event );
1675
- console_unlock ();
1676
1689
unlock_fb_info (fb_info );
1690
+ console_unlock ();
1677
1691
1678
1692
if (ret )
1679
1693
return - EINVAL ;
0 commit comments