* drivers/tty/vt/vt.c:1210:22: warning: comparison is always false due to limited range of data type
@ 2020-06-15 6:24 ` kernel test robot
0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2020-06-15 6:24 UTC (permalink / raw)
To: Nicolas Pitre; +Cc: kbuild-all, linux-kernel, Greg Kroah-Hartman
[-- Attachment #1: Type: text/plain, Size: 16738 bytes --]
Hi Nicolas,
FYI, the error/warning still remains.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: f82e7b57b5fc48199e2f26ffafe2f96f7338ad3d
commit: 2717769e204e83e65b8819c5e2ef3e5b6639b270 vt: don't hardcode the mem allocation upper bound
date: 7 weeks ago
:::::: branch date: 2 hours ago
:::::: commit date: 7 weeks ago
config: ia64-randconfig-r024-20200614 (attached as .config)
compiler: ia64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 2717769e204e83e65b8819c5e2ef3e5b6639b270
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=ia64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
drivers/tty/vt/vt.c: In function 'vc_do_resize':
>> drivers/tty/vt/vt.c:1210:22: warning: comparison is always false due to limited range of data type [-Wtype-limits]
1210 | if (new_screen_size > KMALLOC_MAX_SIZE)
| ^
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2717769e204e83e65b8819c5e2ef3e5b6639b270
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git remote update linus
git checkout 2717769e204e83e65b8819c5e2ef3e5b6639b270
vim +1210 drivers/tty/vt/vt.c
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1163
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1164 /**
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1165 * vc_do_resize - resizing method for the tty
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1166 * @tty: tty being resized
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1167 * @real_tty: real tty (different to tty if a pty/tty pair)
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1168 * @vc: virtual console private data
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1169 * @cols: columns
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1170 * @lines: lines
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1171 *
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1172 * Resize a virtual console, clipping according to the actual constraints.
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1173 * If the caller passes a tty structure then update the termios winsize
3ad2f3fbb96142 drivers/char/vt.c Daniel Mack 2010-02-03 1174 * information and perform any necessary signal handling.
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1175 *
6a1c0680cf3ba9 drivers/tty/vt/vt.c Peter Hurley 2013-06-15 1176 * Caller must hold the console semaphore. Takes the termios rwsem and
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1177 * ctrl_lock of the tty IFF a tty is passed.
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1178 */
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1179
fc6f6238226e6d drivers/char/vt.c Alan Cox 2009-01-02 1180 static int vc_do_resize(struct tty_struct *tty, struct vc_data *vc,
fc6f6238226e6d drivers/char/vt.c Alan Cox 2009-01-02 1181 unsigned int cols, unsigned int lines)
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1182 {
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1183 unsigned long old_origin, new_origin, new_scr_end, rlth, rrem, err = 0;
9e0ba741aabdf1 drivers/char/vt.c qiaochong 2010-08-09 1184 unsigned long end;
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1185 unsigned int old_rows, old_row_size, first_copied_row;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1186 unsigned int new_cols, new_rows, new_row_size, new_screen_size;
9e0ba741aabdf1 drivers/char/vt.c qiaochong 2010-08-09 1187 unsigned int user;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1188 unsigned short *newscreen;
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1189 struct uni_screen *new_uniscr = NULL;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1190
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1191 WARN_CONSOLE_UNLOCKED();
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1192
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1193 if (!vc)
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1194 return -ENXIO;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1195
e400b6ec4ede4d drivers/char/vt.c Antonino A. Daplas 2007-10-16 1196 user = vc->vc_resize_user;
e400b6ec4ede4d drivers/char/vt.c Antonino A. Daplas 2007-10-16 1197 vc->vc_resize_user = 0;
e400b6ec4ede4d drivers/char/vt.c Antonino A. Daplas 2007-10-16 1198
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1199 if (cols > VC_RESIZE_MAXCOL || lines > VC_RESIZE_MAXROW)
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1200 return -EINVAL;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1201
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1202 new_cols = (cols ? cols : vc->vc_cols);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1203 new_rows = (lines ? lines : vc->vc_rows);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1204 new_row_size = new_cols << 1;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1205 new_screen_size = new_row_size * new_rows;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1206
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1207 if (new_cols == vc->vc_cols && new_rows == vc->vc_rows)
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1208 return 0;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1209
2717769e204e83 drivers/tty/vt/vt.c Nicolas Pitre 2020-03-28 @1210 if (new_screen_size > KMALLOC_MAX_SIZE)
32b2921e6a7461 drivers/tty/vt/vt.c Dmitry Vyukov 2016-10-14 1211 return -EINVAL;
21eff69aaaa0e7 drivers/tty/vt/vt.c Alexander Potapenko 2018-06-14 1212 newscreen = kzalloc(new_screen_size, GFP_USER);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1213 if (!newscreen)
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1214 return -ENOMEM;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1215
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1216 if (get_vc_uniscr(vc)) {
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1217 new_uniscr = vc_uniscr_alloc(new_cols, new_rows);
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1218 if (!new_uniscr) {
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1219 kfree(newscreen);
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1220 return -ENOMEM;
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1221 }
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1222 }
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1223
dce05aa6eec977 drivers/tty/vt/vt.c Jiri Slaby 2020-02-19 1224 if (vc_is_sel(vc))
009e39ae44f419 drivers/tty/vt/vt.c Scot Doyle 2016-10-13 1225 clear_selection();
009e39ae44f419 drivers/tty/vt/vt.c Scot Doyle 2016-10-13 1226
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1227 old_rows = vc->vc_rows;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1228 old_row_size = vc->vc_size_row;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1229
e400b6ec4ede4d drivers/char/vt.c Antonino A. Daplas 2007-10-16 1230 err = resize_screen(vc, new_cols, new_rows, user);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1231 if (err) {
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1232 kfree(newscreen);
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1233 kfree(new_uniscr);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1234 return err;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1235 }
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1236
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1237 vc->vc_rows = new_rows;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1238 vc->vc_cols = new_cols;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1239 vc->vc_size_row = new_row_size;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1240 vc->vc_screenbuf_size = new_screen_size;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1241
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1242 rlth = min(old_row_size, new_row_size);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1243 rrem = new_row_size - rlth;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1244 old_origin = vc->vc_origin;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1245 new_origin = (long) newscreen;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1246 new_scr_end = new_origin + new_screen_size;
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1247
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1248 if (vc->vc_y > new_rows) {
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1249 if (old_rows - vc->vc_y < new_rows) {
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1250 /*
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1251 * Cursor near the bottom, copy contents from the
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1252 * bottom of buffer
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1253 */
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1254 first_copied_row = (old_rows - new_rows);
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1255 } else {
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1256 /*
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1257 * Cursor is in no man's land, copy 1/2 screenful
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1258 * from the top and bottom of cursor position
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1259 */
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1260 first_copied_row = (vc->vc_y - new_rows/2);
9fc2b2d0cf7430 drivers/char/vt.c Francisco Jerez 2010-08-22 1261 }
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1262 old_origin += first_copied_row * old_row_size;
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1263 } else
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1264 first_copied_row = 0;
9fc2b2d0cf7430 drivers/char/vt.c Francisco Jerez 2010-08-22 1265 end = old_origin + old_row_size * min(old_rows, new_rows);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1266
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1267 vc_uniscr_copy_area(new_uniscr, new_cols, new_rows,
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1268 get_vc_uniscr(vc), rlth/2, first_copied_row,
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1269 min(old_rows, new_rows));
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1270 vc_uniscr_set(vc, new_uniscr);
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1271
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1272 update_attr(vc);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1273
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1274 while (old_origin < end) {
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1275 scr_memcpyw((unsigned short *) new_origin,
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1276 (unsigned short *) old_origin, rlth);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1277 if (rrem)
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1278 scr_memsetw((void *)(new_origin + rlth),
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1279 vc->vc_video_erase_char, rrem);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1280 old_origin += old_row_size;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1281 new_origin += new_row_size;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1282 }
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1283 if (new_scr_end > new_origin)
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1284 scr_memsetw((void *)new_origin, vc->vc_video_erase_char,
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1285 new_scr_end - new_origin);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1286 kfree(vc->vc_screenbuf);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1287 vc->vc_screenbuf = newscreen;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1288 vc->vc_screenbuf_size = new_screen_size;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1289 set_origin(vc);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1290
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1291 /* do part of a reset_terminal() */
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1292 vc->vc_top = 0;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1293 vc->vc_bottom = vc->vc_rows;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1294 gotoxy(vc, vc->vc_x, vc->vc_y);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1295 save_cur(vc);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1296
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1297 if (tty) {
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1298 /* Rewrite the requested winsize data with the actual
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1299 resulting sizes */
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1300 struct winsize ws;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1301 memset(&ws, 0, sizeof(ws));
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1302 ws.ws_row = vc->vc_rows;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1303 ws.ws_col = vc->vc_cols;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1304 ws.ws_ypixel = vc->vc_scan_lines;
fc6f6238226e6d drivers/char/vt.c Alan Cox 2009-01-02 1305 tty_do_resize(tty, &ws);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1306 }
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1307
6ca8dfd78187d8 drivers/tty/vt/vt.c Jiri Slaby 2016-06-23 1308 if (con_is_visible(vc))
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1309 update_screen(vc);
8b92e87d39bfd0 drivers/char/vt.c Alan Cox 2009-09-19 1310 vt_event_post(VT_EVENT_RESIZE, vc->vc_num, vc->vc_num);
0c9b1965faddad drivers/tty/vt/vt.c Nicolas Pitre 2019-01-08 1311 notify_update(vc);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1312 return err;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1313 }
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1314
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 23903 bytes --]
[-- Attachment #3: Type: text/plain, Size: 149 bytes --]
_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-leave@lists.01.org
^ permalink raw reply [flat|nested] 6+ messages in thread
* drivers/tty/vt/vt.c:1210:22: warning: comparison is always false due to limited range of data type
@ 2020-06-15 6:24 ` kernel test robot
0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2020-06-15 6:24 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 17089 bytes --]
Hi Nicolas,
FYI, the error/warning still remains.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: f82e7b57b5fc48199e2f26ffafe2f96f7338ad3d
commit: 2717769e204e83e65b8819c5e2ef3e5b6639b270 vt: don't hardcode the mem allocation upper bound
date: 7 weeks ago
:::::: branch date: 2 hours ago
:::::: commit date: 7 weeks ago
config: ia64-randconfig-r024-20200614 (attached as .config)
compiler: ia64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 2717769e204e83e65b8819c5e2ef3e5b6639b270
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=ia64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
drivers/tty/vt/vt.c: In function 'vc_do_resize':
>> drivers/tty/vt/vt.c:1210:22: warning: comparison is always false due to limited range of data type [-Wtype-limits]
1210 | if (new_screen_size > KMALLOC_MAX_SIZE)
| ^
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2717769e204e83e65b8819c5e2ef3e5b6639b270
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git remote update linus
git checkout 2717769e204e83e65b8819c5e2ef3e5b6639b270
vim +1210 drivers/tty/vt/vt.c
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1163
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1164 /**
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1165 * vc_do_resize - resizing method for the tty
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1166 * @tty: tty being resized
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1167 * @real_tty: real tty (different to tty if a pty/tty pair)
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1168 * @vc: virtual console private data
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1169 * @cols: columns
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1170 * @lines: lines
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1171 *
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1172 * Resize a virtual console, clipping according to the actual constraints.
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1173 * If the caller passes a tty structure then update the termios winsize
3ad2f3fbb96142 drivers/char/vt.c Daniel Mack 2010-02-03 1174 * information and perform any necessary signal handling.
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1175 *
6a1c0680cf3ba9 drivers/tty/vt/vt.c Peter Hurley 2013-06-15 1176 * Caller must hold the console semaphore. Takes the termios rwsem and
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1177 * ctrl_lock of the tty IFF a tty is passed.
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1178 */
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1179
fc6f6238226e6d drivers/char/vt.c Alan Cox 2009-01-02 1180 static int vc_do_resize(struct tty_struct *tty, struct vc_data *vc,
fc6f6238226e6d drivers/char/vt.c Alan Cox 2009-01-02 1181 unsigned int cols, unsigned int lines)
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1182 {
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1183 unsigned long old_origin, new_origin, new_scr_end, rlth, rrem, err = 0;
9e0ba741aabdf1 drivers/char/vt.c qiaochong 2010-08-09 1184 unsigned long end;
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1185 unsigned int old_rows, old_row_size, first_copied_row;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1186 unsigned int new_cols, new_rows, new_row_size, new_screen_size;
9e0ba741aabdf1 drivers/char/vt.c qiaochong 2010-08-09 1187 unsigned int user;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1188 unsigned short *newscreen;
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1189 struct uni_screen *new_uniscr = NULL;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1190
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1191 WARN_CONSOLE_UNLOCKED();
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1192
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1193 if (!vc)
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1194 return -ENXIO;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1195
e400b6ec4ede4d drivers/char/vt.c Antonino A. Daplas 2007-10-16 1196 user = vc->vc_resize_user;
e400b6ec4ede4d drivers/char/vt.c Antonino A. Daplas 2007-10-16 1197 vc->vc_resize_user = 0;
e400b6ec4ede4d drivers/char/vt.c Antonino A. Daplas 2007-10-16 1198
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1199 if (cols > VC_RESIZE_MAXCOL || lines > VC_RESIZE_MAXROW)
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1200 return -EINVAL;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1201
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1202 new_cols = (cols ? cols : vc->vc_cols);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1203 new_rows = (lines ? lines : vc->vc_rows);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1204 new_row_size = new_cols << 1;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1205 new_screen_size = new_row_size * new_rows;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1206
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1207 if (new_cols == vc->vc_cols && new_rows == vc->vc_rows)
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1208 return 0;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1209
2717769e204e83 drivers/tty/vt/vt.c Nicolas Pitre 2020-03-28 @1210 if (new_screen_size > KMALLOC_MAX_SIZE)
32b2921e6a7461 drivers/tty/vt/vt.c Dmitry Vyukov 2016-10-14 1211 return -EINVAL;
21eff69aaaa0e7 drivers/tty/vt/vt.c Alexander Potapenko 2018-06-14 1212 newscreen = kzalloc(new_screen_size, GFP_USER);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1213 if (!newscreen)
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1214 return -ENOMEM;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1215
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1216 if (get_vc_uniscr(vc)) {
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1217 new_uniscr = vc_uniscr_alloc(new_cols, new_rows);
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1218 if (!new_uniscr) {
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1219 kfree(newscreen);
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1220 return -ENOMEM;
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1221 }
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1222 }
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1223
dce05aa6eec977 drivers/tty/vt/vt.c Jiri Slaby 2020-02-19 1224 if (vc_is_sel(vc))
009e39ae44f419 drivers/tty/vt/vt.c Scot Doyle 2016-10-13 1225 clear_selection();
009e39ae44f419 drivers/tty/vt/vt.c Scot Doyle 2016-10-13 1226
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1227 old_rows = vc->vc_rows;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1228 old_row_size = vc->vc_size_row;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1229
e400b6ec4ede4d drivers/char/vt.c Antonino A. Daplas 2007-10-16 1230 err = resize_screen(vc, new_cols, new_rows, user);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1231 if (err) {
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1232 kfree(newscreen);
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1233 kfree(new_uniscr);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1234 return err;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1235 }
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1236
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1237 vc->vc_rows = new_rows;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1238 vc->vc_cols = new_cols;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1239 vc->vc_size_row = new_row_size;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1240 vc->vc_screenbuf_size = new_screen_size;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1241
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1242 rlth = min(old_row_size, new_row_size);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1243 rrem = new_row_size - rlth;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1244 old_origin = vc->vc_origin;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1245 new_origin = (long) newscreen;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1246 new_scr_end = new_origin + new_screen_size;
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1247
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1248 if (vc->vc_y > new_rows) {
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1249 if (old_rows - vc->vc_y < new_rows) {
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1250 /*
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1251 * Cursor near the bottom, copy contents from the
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1252 * bottom of buffer
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1253 */
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1254 first_copied_row = (old_rows - new_rows);
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1255 } else {
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1256 /*
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1257 * Cursor is in no man's land, copy 1/2 screenful
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1258 * from the top and bottom of cursor position
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1259 */
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1260 first_copied_row = (vc->vc_y - new_rows/2);
9fc2b2d0cf7430 drivers/char/vt.c Francisco Jerez 2010-08-22 1261 }
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1262 old_origin += first_copied_row * old_row_size;
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1263 } else
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1264 first_copied_row = 0;
9fc2b2d0cf7430 drivers/char/vt.c Francisco Jerez 2010-08-22 1265 end = old_origin + old_row_size * min(old_rows, new_rows);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1266
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1267 vc_uniscr_copy_area(new_uniscr, new_cols, new_rows,
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1268 get_vc_uniscr(vc), rlth/2, first_copied_row,
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1269 min(old_rows, new_rows));
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1270 vc_uniscr_set(vc, new_uniscr);
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1271
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1272 update_attr(vc);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1273
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1274 while (old_origin < end) {
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1275 scr_memcpyw((unsigned short *) new_origin,
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1276 (unsigned short *) old_origin, rlth);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1277 if (rrem)
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1278 scr_memsetw((void *)(new_origin + rlth),
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1279 vc->vc_video_erase_char, rrem);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1280 old_origin += old_row_size;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1281 new_origin += new_row_size;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1282 }
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1283 if (new_scr_end > new_origin)
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1284 scr_memsetw((void *)new_origin, vc->vc_video_erase_char,
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1285 new_scr_end - new_origin);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1286 kfree(vc->vc_screenbuf);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1287 vc->vc_screenbuf = newscreen;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1288 vc->vc_screenbuf_size = new_screen_size;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1289 set_origin(vc);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1290
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1291 /* do part of a reset_terminal() */
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1292 vc->vc_top = 0;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1293 vc->vc_bottom = vc->vc_rows;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1294 gotoxy(vc, vc->vc_x, vc->vc_y);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1295 save_cur(vc);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1296
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1297 if (tty) {
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1298 /* Rewrite the requested winsize data with the actual
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1299 resulting sizes */
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1300 struct winsize ws;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1301 memset(&ws, 0, sizeof(ws));
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1302 ws.ws_row = vc->vc_rows;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1303 ws.ws_col = vc->vc_cols;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1304 ws.ws_ypixel = vc->vc_scan_lines;
fc6f6238226e6d drivers/char/vt.c Alan Cox 2009-01-02 1305 tty_do_resize(tty, &ws);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1306 }
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1307
6ca8dfd78187d8 drivers/tty/vt/vt.c Jiri Slaby 2016-06-23 1308 if (con_is_visible(vc))
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1309 update_screen(vc);
8b92e87d39bfd0 drivers/char/vt.c Alan Cox 2009-09-19 1310 vt_event_post(VT_EVENT_RESIZE, vc->vc_num, vc->vc_num);
0c9b1965faddad drivers/tty/vt/vt.c Nicolas Pitre 2019-01-08 1311 notify_update(vc);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1312 return err;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1313 }
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1314
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
_______________________________________________
kbuild mailing list -- kbuild(a)lists.01.org
To unsubscribe send an email to kbuild-leave(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 23903 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: drivers/tty/vt/vt.c:1210:22: warning: comparison is always false due to limited range of data type
2020-06-15 6:24 ` kernel test robot
(?)
@ 2020-06-17 16:15 ` Nicolas Pitre
-1 siblings, 0 replies; 6+ messages in thread
From: Nicolas Pitre @ 2020-06-17 16:15 UTC (permalink / raw)
To: kernel test robot; +Cc: kbuild-all, linux-kernel, Greg Kroah-Hartman
I don't know what to do with this. IMHO the warning is useless in this
particular case. It happens only on a few targets and depends on the
kernel config, etc.
If the condition is always false in some cases then so be it. The
compiler can optimize the unneeded code away I'm sure.
On Mon, 15 Jun 2020, kernel test robot wrote:
> Hi Nicolas,
>
> FYI, the error/warning still remains.
>
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: f82e7b57b5fc48199e2f26ffafe2f96f7338ad3d
> commit: 2717769e204e83e65b8819c5e2ef3e5b6639b270 vt: don't hardcode the mem allocation upper bound
> date: 7 weeks ago
> :::::: branch date: 2 hours ago
> :::::: commit date: 7 weeks ago
> config: ia64-randconfig-r024-20200614 (attached as .config)
> compiler: ia64-linux-gcc (GCC) 9.3.0
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> git checkout 2717769e204e83e65b8819c5e2ef3e5b6639b270
> # save the attached .config to linux build tree
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=ia64
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
>
> All warnings (new ones prefixed by >>, old ones prefixed by <<):
>
> drivers/tty/vt/vt.c: In function 'vc_do_resize':
> >> drivers/tty/vt/vt.c:1210:22: warning: comparison is always false due to limited range of data type [-Wtype-limits]
> 1210 | if (new_screen_size > KMALLOC_MAX_SIZE)
> | ^
>
> # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2717769e204e83e65b8819c5e2ef3e5b6639b270
> git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> git remote update linus
> git checkout 2717769e204e83e65b8819c5e2ef3e5b6639b270
> vim +1210 drivers/tty/vt/vt.c
>
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1163
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1164 /**
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1165 * vc_do_resize - resizing method for the tty
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1166 * @tty: tty being resized
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1167 * @real_tty: real tty (different to tty if a pty/tty pair)
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1168 * @vc: virtual console private data
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1169 * @cols: columns
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1170 * @lines: lines
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1171 *
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1172 * Resize a virtual console, clipping according to the actual constraints.
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1173 * If the caller passes a tty structure then update the termios winsize
> 3ad2f3fbb96142 drivers/char/vt.c Daniel Mack 2010-02-03 1174 * information and perform any necessary signal handling.
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1175 *
> 6a1c0680cf3ba9 drivers/tty/vt/vt.c Peter Hurley 2013-06-15 1176 * Caller must hold the console semaphore. Takes the termios rwsem and
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1177 * ctrl_lock of the tty IFF a tty is passed.
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1178 */
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1179
> fc6f6238226e6d drivers/char/vt.c Alan Cox 2009-01-02 1180 static int vc_do_resize(struct tty_struct *tty, struct vc_data *vc,
> fc6f6238226e6d drivers/char/vt.c Alan Cox 2009-01-02 1181 unsigned int cols, unsigned int lines)
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1182 {
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1183 unsigned long old_origin, new_origin, new_scr_end, rlth, rrem, err = 0;
> 9e0ba741aabdf1 drivers/char/vt.c qiaochong 2010-08-09 1184 unsigned long end;
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1185 unsigned int old_rows, old_row_size, first_copied_row;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1186 unsigned int new_cols, new_rows, new_row_size, new_screen_size;
> 9e0ba741aabdf1 drivers/char/vt.c qiaochong 2010-08-09 1187 unsigned int user;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1188 unsigned short *newscreen;
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1189 struct uni_screen *new_uniscr = NULL;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1190
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1191 WARN_CONSOLE_UNLOCKED();
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1192
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1193 if (!vc)
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1194 return -ENXIO;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1195
> e400b6ec4ede4d drivers/char/vt.c Antonino A. Daplas 2007-10-16 1196 user = vc->vc_resize_user;
> e400b6ec4ede4d drivers/char/vt.c Antonino A. Daplas 2007-10-16 1197 vc->vc_resize_user = 0;
> e400b6ec4ede4d drivers/char/vt.c Antonino A. Daplas 2007-10-16 1198
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1199 if (cols > VC_RESIZE_MAXCOL || lines > VC_RESIZE_MAXROW)
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1200 return -EINVAL;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1201
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1202 new_cols = (cols ? cols : vc->vc_cols);
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1203 new_rows = (lines ? lines : vc->vc_rows);
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1204 new_row_size = new_cols << 1;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1205 new_screen_size = new_row_size * new_rows;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1206
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1207 if (new_cols == vc->vc_cols && new_rows == vc->vc_rows)
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1208 return 0;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1209
> 2717769e204e83 drivers/tty/vt/vt.c Nicolas Pitre 2020-03-28 @1210 if (new_screen_size > KMALLOC_MAX_SIZE)
> 32b2921e6a7461 drivers/tty/vt/vt.c Dmitry Vyukov 2016-10-14 1211 return -EINVAL;
> 21eff69aaaa0e7 drivers/tty/vt/vt.c Alexander Potapenko 2018-06-14 1212 newscreen = kzalloc(new_screen_size, GFP_USER);
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1213 if (!newscreen)
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1214 return -ENOMEM;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1215
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1216 if (get_vc_uniscr(vc)) {
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1217 new_uniscr = vc_uniscr_alloc(new_cols, new_rows);
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1218 if (!new_uniscr) {
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1219 kfree(newscreen);
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1220 return -ENOMEM;
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1221 }
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1222 }
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1223
> dce05aa6eec977 drivers/tty/vt/vt.c Jiri Slaby 2020-02-19 1224 if (vc_is_sel(vc))
> 009e39ae44f419 drivers/tty/vt/vt.c Scot Doyle 2016-10-13 1225 clear_selection();
> 009e39ae44f419 drivers/tty/vt/vt.c Scot Doyle 2016-10-13 1226
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1227 old_rows = vc->vc_rows;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1228 old_row_size = vc->vc_size_row;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1229
> e400b6ec4ede4d drivers/char/vt.c Antonino A. Daplas 2007-10-16 1230 err = resize_screen(vc, new_cols, new_rows, user);
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1231 if (err) {
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1232 kfree(newscreen);
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1233 kfree(new_uniscr);
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1234 return err;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1235 }
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1236
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1237 vc->vc_rows = new_rows;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1238 vc->vc_cols = new_cols;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1239 vc->vc_size_row = new_row_size;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1240 vc->vc_screenbuf_size = new_screen_size;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1241
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1242 rlth = min(old_row_size, new_row_size);
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1243 rrem = new_row_size - rlth;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1244 old_origin = vc->vc_origin;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1245 new_origin = (long) newscreen;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1246 new_scr_end = new_origin + new_screen_size;
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1247
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1248 if (vc->vc_y > new_rows) {
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1249 if (old_rows - vc->vc_y < new_rows) {
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1250 /*
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1251 * Cursor near the bottom, copy contents from the
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1252 * bottom of buffer
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1253 */
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1254 first_copied_row = (old_rows - new_rows);
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1255 } else {
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1256 /*
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1257 * Cursor is in no man's land, copy 1/2 screenful
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1258 * from the top and bottom of cursor position
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1259 */
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1260 first_copied_row = (vc->vc_y - new_rows/2);
> 9fc2b2d0cf7430 drivers/char/vt.c Francisco Jerez 2010-08-22 1261 }
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1262 old_origin += first_copied_row * old_row_size;
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1263 } else
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1264 first_copied_row = 0;
> 9fc2b2d0cf7430 drivers/char/vt.c Francisco Jerez 2010-08-22 1265 end = old_origin + old_row_size * min(old_rows, new_rows);
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1266
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1267 vc_uniscr_copy_area(new_uniscr, new_cols, new_rows,
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1268 get_vc_uniscr(vc), rlth/2, first_copied_row,
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1269 min(old_rows, new_rows));
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1270 vc_uniscr_set(vc, new_uniscr);
> d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1271
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1272 update_attr(vc);
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1273
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1274 while (old_origin < end) {
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1275 scr_memcpyw((unsigned short *) new_origin,
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1276 (unsigned short *) old_origin, rlth);
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1277 if (rrem)
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1278 scr_memsetw((void *)(new_origin + rlth),
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1279 vc->vc_video_erase_char, rrem);
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1280 old_origin += old_row_size;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1281 new_origin += new_row_size;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1282 }
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1283 if (new_scr_end > new_origin)
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1284 scr_memsetw((void *)new_origin, vc->vc_video_erase_char,
> 3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1285 new_scr_end - new_origin);
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1286 kfree(vc->vc_screenbuf);
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1287 vc->vc_screenbuf = newscreen;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1288 vc->vc_screenbuf_size = new_screen_size;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1289 set_origin(vc);
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1290
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1291 /* do part of a reset_terminal() */
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1292 vc->vc_top = 0;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1293 vc->vc_bottom = vc->vc_rows;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1294 gotoxy(vc, vc->vc_x, vc->vc_y);
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1295 save_cur(vc);
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1296
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1297 if (tty) {
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1298 /* Rewrite the requested winsize data with the actual
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1299 resulting sizes */
> 8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1300 struct winsize ws;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1301 memset(&ws, 0, sizeof(ws));
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1302 ws.ws_row = vc->vc_rows;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1303 ws.ws_col = vc->vc_cols;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1304 ws.ws_ypixel = vc->vc_scan_lines;
> fc6f6238226e6d drivers/char/vt.c Alan Cox 2009-01-02 1305 tty_do_resize(tty, &ws);
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1306 }
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1307
> 6ca8dfd78187d8 drivers/tty/vt/vt.c Jiri Slaby 2016-06-23 1308 if (con_is_visible(vc))
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1309 update_screen(vc);
> 8b92e87d39bfd0 drivers/char/vt.c Alan Cox 2009-09-19 1310 vt_event_post(VT_EVENT_RESIZE, vc->vc_num, vc->vc_num);
> 0c9b1965faddad drivers/tty/vt/vt.c Nicolas Pitre 2019-01-08 1311 notify_update(vc);
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1312 return err;
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1313 }
> ^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1314
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* drivers/tty/vt/vt.c:1210:22: warning: comparison is always false due to limited range of data type
@ 2020-06-13 22:31 kernel test robot
0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2020-06-13 22:31 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 17093 bytes --]
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Nicolas Pitre <nico@fluxnic.net>
CC: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
Hi Nicolas,
FYI, the error/warning still remains.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: f82e7b57b5fc48199e2f26ffafe2f96f7338ad3d
commit: 2717769e204e83e65b8819c5e2ef3e5b6639b270 vt: don't hardcode the mem allocation upper bound
date: 7 weeks ago
:::::: branch date: 2 hours ago
:::::: commit date: 7 weeks ago
config: ia64-randconfig-r024-20200614 (attached as .config)
compiler: ia64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 2717769e204e83e65b8819c5e2ef3e5b6639b270
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=ia64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
drivers/tty/vt/vt.c: In function 'vc_do_resize':
>> drivers/tty/vt/vt.c:1210:22: warning: comparison is always false due to limited range of data type [-Wtype-limits]
1210 | if (new_screen_size > KMALLOC_MAX_SIZE)
| ^
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2717769e204e83e65b8819c5e2ef3e5b6639b270
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git remote update linus
git checkout 2717769e204e83e65b8819c5e2ef3e5b6639b270
vim +1210 drivers/tty/vt/vt.c
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1163
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1164 /**
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1165 * vc_do_resize - resizing method for the tty
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1166 * @tty: tty being resized
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1167 * @real_tty: real tty (different to tty if a pty/tty pair)
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1168 * @vc: virtual console private data
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1169 * @cols: columns
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1170 * @lines: lines
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1171 *
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1172 * Resize a virtual console, clipping according to the actual constraints.
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1173 * If the caller passes a tty structure then update the termios winsize
3ad2f3fbb96142 drivers/char/vt.c Daniel Mack 2010-02-03 1174 * information and perform any necessary signal handling.
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1175 *
6a1c0680cf3ba9 drivers/tty/vt/vt.c Peter Hurley 2013-06-15 1176 * Caller must hold the console semaphore. Takes the termios rwsem and
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1177 * ctrl_lock of the tty IFF a tty is passed.
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1178 */
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1179
fc6f6238226e6d drivers/char/vt.c Alan Cox 2009-01-02 1180 static int vc_do_resize(struct tty_struct *tty, struct vc_data *vc,
fc6f6238226e6d drivers/char/vt.c Alan Cox 2009-01-02 1181 unsigned int cols, unsigned int lines)
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1182 {
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1183 unsigned long old_origin, new_origin, new_scr_end, rlth, rrem, err = 0;
9e0ba741aabdf1 drivers/char/vt.c qiaochong 2010-08-09 1184 unsigned long end;
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1185 unsigned int old_rows, old_row_size, first_copied_row;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1186 unsigned int new_cols, new_rows, new_row_size, new_screen_size;
9e0ba741aabdf1 drivers/char/vt.c qiaochong 2010-08-09 1187 unsigned int user;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1188 unsigned short *newscreen;
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1189 struct uni_screen *new_uniscr = NULL;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1190
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1191 WARN_CONSOLE_UNLOCKED();
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1192
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1193 if (!vc)
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1194 return -ENXIO;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1195
e400b6ec4ede4d drivers/char/vt.c Antonino A. Daplas 2007-10-16 1196 user = vc->vc_resize_user;
e400b6ec4ede4d drivers/char/vt.c Antonino A. Daplas 2007-10-16 1197 vc->vc_resize_user = 0;
e400b6ec4ede4d drivers/char/vt.c Antonino A. Daplas 2007-10-16 1198
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1199 if (cols > VC_RESIZE_MAXCOL || lines > VC_RESIZE_MAXROW)
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1200 return -EINVAL;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1201
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1202 new_cols = (cols ? cols : vc->vc_cols);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1203 new_rows = (lines ? lines : vc->vc_rows);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1204 new_row_size = new_cols << 1;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1205 new_screen_size = new_row_size * new_rows;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1206
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1207 if (new_cols == vc->vc_cols && new_rows == vc->vc_rows)
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1208 return 0;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1209
2717769e204e83 drivers/tty/vt/vt.c Nicolas Pitre 2020-03-28 @1210 if (new_screen_size > KMALLOC_MAX_SIZE)
32b2921e6a7461 drivers/tty/vt/vt.c Dmitry Vyukov 2016-10-14 1211 return -EINVAL;
21eff69aaaa0e7 drivers/tty/vt/vt.c Alexander Potapenko 2018-06-14 1212 newscreen = kzalloc(new_screen_size, GFP_USER);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1213 if (!newscreen)
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1214 return -ENOMEM;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1215
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1216 if (get_vc_uniscr(vc)) {
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1217 new_uniscr = vc_uniscr_alloc(new_cols, new_rows);
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1218 if (!new_uniscr) {
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1219 kfree(newscreen);
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1220 return -ENOMEM;
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1221 }
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1222 }
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1223
dce05aa6eec977 drivers/tty/vt/vt.c Jiri Slaby 2020-02-19 1224 if (vc_is_sel(vc))
009e39ae44f419 drivers/tty/vt/vt.c Scot Doyle 2016-10-13 1225 clear_selection();
009e39ae44f419 drivers/tty/vt/vt.c Scot Doyle 2016-10-13 1226
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1227 old_rows = vc->vc_rows;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1228 old_row_size = vc->vc_size_row;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1229
e400b6ec4ede4d drivers/char/vt.c Antonino A. Daplas 2007-10-16 1230 err = resize_screen(vc, new_cols, new_rows, user);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1231 if (err) {
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1232 kfree(newscreen);
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1233 kfree(new_uniscr);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1234 return err;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1235 }
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1236
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1237 vc->vc_rows = new_rows;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1238 vc->vc_cols = new_cols;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1239 vc->vc_size_row = new_row_size;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1240 vc->vc_screenbuf_size = new_screen_size;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1241
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1242 rlth = min(old_row_size, new_row_size);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1243 rrem = new_row_size - rlth;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1244 old_origin = vc->vc_origin;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1245 new_origin = (long) newscreen;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1246 new_scr_end = new_origin + new_screen_size;
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1247
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1248 if (vc->vc_y > new_rows) {
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1249 if (old_rows - vc->vc_y < new_rows) {
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1250 /*
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1251 * Cursor near the bottom, copy contents from the
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1252 * bottom of buffer
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1253 */
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1254 first_copied_row = (old_rows - new_rows);
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1255 } else {
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1256 /*
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1257 * Cursor is in no man's land, copy 1/2 screenful
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1258 * from the top and bottom of cursor position
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1259 */
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1260 first_copied_row = (vc->vc_y - new_rows/2);
9fc2b2d0cf7430 drivers/char/vt.c Francisco Jerez 2010-08-22 1261 }
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1262 old_origin += first_copied_row * old_row_size;
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1263 } else
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1264 first_copied_row = 0;
9fc2b2d0cf7430 drivers/char/vt.c Francisco Jerez 2010-08-22 1265 end = old_origin + old_row_size * min(old_rows, new_rows);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1266
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1267 vc_uniscr_copy_area(new_uniscr, new_cols, new_rows,
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1268 get_vc_uniscr(vc), rlth/2, first_copied_row,
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1269 min(old_rows, new_rows));
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1270 vc_uniscr_set(vc, new_uniscr);
d8ae7242718738 drivers/tty/vt/vt.c Nicolas Pitre 2018-06-26 1271
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1272 update_attr(vc);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1273
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1274 while (old_origin < end) {
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1275 scr_memcpyw((unsigned short *) new_origin,
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1276 (unsigned short *) old_origin, rlth);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1277 if (rrem)
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1278 scr_memsetw((void *)(new_origin + rlth),
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1279 vc->vc_video_erase_char, rrem);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1280 old_origin += old_row_size;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1281 new_origin += new_row_size;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1282 }
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1283 if (new_scr_end > new_origin)
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1284 scr_memsetw((void *)new_origin, vc->vc_video_erase_char,
3b41dc1a3c7839 drivers/char/vt.c Antonino A. Daplas 2005-09-09 1285 new_scr_end - new_origin);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1286 kfree(vc->vc_screenbuf);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1287 vc->vc_screenbuf = newscreen;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1288 vc->vc_screenbuf_size = new_screen_size;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1289 set_origin(vc);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1290
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1291 /* do part of a reset_terminal() */
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1292 vc->vc_top = 0;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1293 vc->vc_bottom = vc->vc_rows;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1294 gotoxy(vc, vc->vc_x, vc->vc_y);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1295 save_cur(vc);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1296
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1297 if (tty) {
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1298 /* Rewrite the requested winsize data with the actual
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1299 resulting sizes */
8c9a9dd0fa3a26 drivers/char/vt.c Alan Cox 2008-08-15 1300 struct winsize ws;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1301 memset(&ws, 0, sizeof(ws));
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1302 ws.ws_row = vc->vc_rows;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1303 ws.ws_col = vc->vc_cols;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1304 ws.ws_ypixel = vc->vc_scan_lines;
fc6f6238226e6d drivers/char/vt.c Alan Cox 2009-01-02 1305 tty_do_resize(tty, &ws);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1306 }
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1307
6ca8dfd78187d8 drivers/tty/vt/vt.c Jiri Slaby 2016-06-23 1308 if (con_is_visible(vc))
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1309 update_screen(vc);
8b92e87d39bfd0 drivers/char/vt.c Alan Cox 2009-09-19 1310 vt_event_post(VT_EVENT_RESIZE, vc->vc_num, vc->vc_num);
0c9b1965faddad drivers/tty/vt/vt.c Nicolas Pitre 2019-01-08 1311 notify_update(vc);
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1312 return err;
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1313 }
^1da177e4c3f41 drivers/char/vt.c Linus Torvalds 2005-04-16 1314
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 23903 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* drivers/tty/vt/vt.c:1210:22: warning: comparison is always false due to limited range of data type
@ 2020-05-19 2:33 ` kbuild test robot
0 siblings, 0 replies; 6+ messages in thread
From: kbuild test robot @ 2020-05-19 2:33 UTC (permalink / raw)
To: Nicolas Pitre; +Cc: kbuild-all, linux-kernel, Greg Kroah-Hartman
[-- Attachment #1: Type: text/plain, Size: 6266 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 642b151f45dd54809ea00ecd3976a56c1ec9b53d
commit: 2717769e204e83e65b8819c5e2ef3e5b6639b270 vt: don't hardcode the mem allocation upper bound
date: 4 weeks ago
config: ia64-defconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 2717769e204e83e65b8819c5e2ef3e5b6639b270
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=ia64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
drivers/tty/vt/vt.c: In function 'vc_do_resize':
>> drivers/tty/vt/vt.c:1210:22: warning: comparison is always false due to limited range of data type [-Wtype-limits]
1210 | if (new_screen_size > KMALLOC_MAX_SIZE)
| ^
vim +1210 drivers/tty/vt/vt.c
1163
1164 /**
1165 * vc_do_resize - resizing method for the tty
1166 * @tty: tty being resized
1167 * @real_tty: real tty (different to tty if a pty/tty pair)
1168 * @vc: virtual console private data
1169 * @cols: columns
1170 * @lines: lines
1171 *
1172 * Resize a virtual console, clipping according to the actual constraints.
1173 * If the caller passes a tty structure then update the termios winsize
1174 * information and perform any necessary signal handling.
1175 *
1176 * Caller must hold the console semaphore. Takes the termios rwsem and
1177 * ctrl_lock of the tty IFF a tty is passed.
1178 */
1179
1180 static int vc_do_resize(struct tty_struct *tty, struct vc_data *vc,
1181 unsigned int cols, unsigned int lines)
1182 {
1183 unsigned long old_origin, new_origin, new_scr_end, rlth, rrem, err = 0;
1184 unsigned long end;
1185 unsigned int old_rows, old_row_size, first_copied_row;
1186 unsigned int new_cols, new_rows, new_row_size, new_screen_size;
1187 unsigned int user;
1188 unsigned short *newscreen;
1189 struct uni_screen *new_uniscr = NULL;
1190
1191 WARN_CONSOLE_UNLOCKED();
1192
1193 if (!vc)
1194 return -ENXIO;
1195
1196 user = vc->vc_resize_user;
1197 vc->vc_resize_user = 0;
1198
1199 if (cols > VC_RESIZE_MAXCOL || lines > VC_RESIZE_MAXROW)
1200 return -EINVAL;
1201
1202 new_cols = (cols ? cols : vc->vc_cols);
1203 new_rows = (lines ? lines : vc->vc_rows);
1204 new_row_size = new_cols << 1;
1205 new_screen_size = new_row_size * new_rows;
1206
1207 if (new_cols == vc->vc_cols && new_rows == vc->vc_rows)
1208 return 0;
1209
> 1210 if (new_screen_size > KMALLOC_MAX_SIZE)
1211 return -EINVAL;
1212 newscreen = kzalloc(new_screen_size, GFP_USER);
1213 if (!newscreen)
1214 return -ENOMEM;
1215
1216 if (get_vc_uniscr(vc)) {
1217 new_uniscr = vc_uniscr_alloc(new_cols, new_rows);
1218 if (!new_uniscr) {
1219 kfree(newscreen);
1220 return -ENOMEM;
1221 }
1222 }
1223
1224 if (vc_is_sel(vc))
1225 clear_selection();
1226
1227 old_rows = vc->vc_rows;
1228 old_row_size = vc->vc_size_row;
1229
1230 err = resize_screen(vc, new_cols, new_rows, user);
1231 if (err) {
1232 kfree(newscreen);
1233 kfree(new_uniscr);
1234 return err;
1235 }
1236
1237 vc->vc_rows = new_rows;
1238 vc->vc_cols = new_cols;
1239 vc->vc_size_row = new_row_size;
1240 vc->vc_screenbuf_size = new_screen_size;
1241
1242 rlth = min(old_row_size, new_row_size);
1243 rrem = new_row_size - rlth;
1244 old_origin = vc->vc_origin;
1245 new_origin = (long) newscreen;
1246 new_scr_end = new_origin + new_screen_size;
1247
1248 if (vc->vc_y > new_rows) {
1249 if (old_rows - vc->vc_y < new_rows) {
1250 /*
1251 * Cursor near the bottom, copy contents from the
1252 * bottom of buffer
1253 */
1254 first_copied_row = (old_rows - new_rows);
1255 } else {
1256 /*
1257 * Cursor is in no man's land, copy 1/2 screenful
1258 * from the top and bottom of cursor position
1259 */
1260 first_copied_row = (vc->vc_y - new_rows/2);
1261 }
1262 old_origin += first_copied_row * old_row_size;
1263 } else
1264 first_copied_row = 0;
1265 end = old_origin + old_row_size * min(old_rows, new_rows);
1266
1267 vc_uniscr_copy_area(new_uniscr, new_cols, new_rows,
1268 get_vc_uniscr(vc), rlth/2, first_copied_row,
1269 min(old_rows, new_rows));
1270 vc_uniscr_set(vc, new_uniscr);
1271
1272 update_attr(vc);
1273
1274 while (old_origin < end) {
1275 scr_memcpyw((unsigned short *) new_origin,
1276 (unsigned short *) old_origin, rlth);
1277 if (rrem)
1278 scr_memsetw((void *)(new_origin + rlth),
1279 vc->vc_video_erase_char, rrem);
1280 old_origin += old_row_size;
1281 new_origin += new_row_size;
1282 }
1283 if (new_scr_end > new_origin)
1284 scr_memsetw((void *)new_origin, vc->vc_video_erase_char,
1285 new_scr_end - new_origin);
1286 kfree(vc->vc_screenbuf);
1287 vc->vc_screenbuf = newscreen;
1288 vc->vc_screenbuf_size = new_screen_size;
1289 set_origin(vc);
1290
1291 /* do part of a reset_terminal() */
1292 vc->vc_top = 0;
1293 vc->vc_bottom = vc->vc_rows;
1294 gotoxy(vc, vc->vc_x, vc->vc_y);
1295 save_cur(vc);
1296
1297 if (tty) {
1298 /* Rewrite the requested winsize data with the actual
1299 resulting sizes */
1300 struct winsize ws;
1301 memset(&ws, 0, sizeof(ws));
1302 ws.ws_row = vc->vc_rows;
1303 ws.ws_col = vc->vc_cols;
1304 ws.ws_ypixel = vc->vc_scan_lines;
1305 tty_do_resize(tty, &ws);
1306 }
1307
1308 if (con_is_visible(vc))
1309 update_screen(vc);
1310 vt_event_post(VT_EVENT_RESIZE, vc->vc_num, vc->vc_num);
1311 notify_update(vc);
1312 return err;
1313 }
1314
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 20091 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* drivers/tty/vt/vt.c:1210:22: warning: comparison is always false due to limited range of data type
@ 2020-05-19 2:33 ` kbuild test robot
0 siblings, 0 replies; 6+ messages in thread
From: kbuild test robot @ 2020-05-19 2:33 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 6449 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 642b151f45dd54809ea00ecd3976a56c1ec9b53d
commit: 2717769e204e83e65b8819c5e2ef3e5b6639b270 vt: don't hardcode the mem allocation upper bound
date: 4 weeks ago
config: ia64-defconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 2717769e204e83e65b8819c5e2ef3e5b6639b270
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=ia64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
drivers/tty/vt/vt.c: In function 'vc_do_resize':
>> drivers/tty/vt/vt.c:1210:22: warning: comparison is always false due to limited range of data type [-Wtype-limits]
1210 | if (new_screen_size > KMALLOC_MAX_SIZE)
| ^
vim +1210 drivers/tty/vt/vt.c
1163
1164 /**
1165 * vc_do_resize - resizing method for the tty
1166 * @tty: tty being resized
1167 * @real_tty: real tty (different to tty if a pty/tty pair)
1168 * @vc: virtual console private data
1169 * @cols: columns
1170 * @lines: lines
1171 *
1172 * Resize a virtual console, clipping according to the actual constraints.
1173 * If the caller passes a tty structure then update the termios winsize
1174 * information and perform any necessary signal handling.
1175 *
1176 * Caller must hold the console semaphore. Takes the termios rwsem and
1177 * ctrl_lock of the tty IFF a tty is passed.
1178 */
1179
1180 static int vc_do_resize(struct tty_struct *tty, struct vc_data *vc,
1181 unsigned int cols, unsigned int lines)
1182 {
1183 unsigned long old_origin, new_origin, new_scr_end, rlth, rrem, err = 0;
1184 unsigned long end;
1185 unsigned int old_rows, old_row_size, first_copied_row;
1186 unsigned int new_cols, new_rows, new_row_size, new_screen_size;
1187 unsigned int user;
1188 unsigned short *newscreen;
1189 struct uni_screen *new_uniscr = NULL;
1190
1191 WARN_CONSOLE_UNLOCKED();
1192
1193 if (!vc)
1194 return -ENXIO;
1195
1196 user = vc->vc_resize_user;
1197 vc->vc_resize_user = 0;
1198
1199 if (cols > VC_RESIZE_MAXCOL || lines > VC_RESIZE_MAXROW)
1200 return -EINVAL;
1201
1202 new_cols = (cols ? cols : vc->vc_cols);
1203 new_rows = (lines ? lines : vc->vc_rows);
1204 new_row_size = new_cols << 1;
1205 new_screen_size = new_row_size * new_rows;
1206
1207 if (new_cols == vc->vc_cols && new_rows == vc->vc_rows)
1208 return 0;
1209
> 1210 if (new_screen_size > KMALLOC_MAX_SIZE)
1211 return -EINVAL;
1212 newscreen = kzalloc(new_screen_size, GFP_USER);
1213 if (!newscreen)
1214 return -ENOMEM;
1215
1216 if (get_vc_uniscr(vc)) {
1217 new_uniscr = vc_uniscr_alloc(new_cols, new_rows);
1218 if (!new_uniscr) {
1219 kfree(newscreen);
1220 return -ENOMEM;
1221 }
1222 }
1223
1224 if (vc_is_sel(vc))
1225 clear_selection();
1226
1227 old_rows = vc->vc_rows;
1228 old_row_size = vc->vc_size_row;
1229
1230 err = resize_screen(vc, new_cols, new_rows, user);
1231 if (err) {
1232 kfree(newscreen);
1233 kfree(new_uniscr);
1234 return err;
1235 }
1236
1237 vc->vc_rows = new_rows;
1238 vc->vc_cols = new_cols;
1239 vc->vc_size_row = new_row_size;
1240 vc->vc_screenbuf_size = new_screen_size;
1241
1242 rlth = min(old_row_size, new_row_size);
1243 rrem = new_row_size - rlth;
1244 old_origin = vc->vc_origin;
1245 new_origin = (long) newscreen;
1246 new_scr_end = new_origin + new_screen_size;
1247
1248 if (vc->vc_y > new_rows) {
1249 if (old_rows - vc->vc_y < new_rows) {
1250 /*
1251 * Cursor near the bottom, copy contents from the
1252 * bottom of buffer
1253 */
1254 first_copied_row = (old_rows - new_rows);
1255 } else {
1256 /*
1257 * Cursor is in no man's land, copy 1/2 screenful
1258 * from the top and bottom of cursor position
1259 */
1260 first_copied_row = (vc->vc_y - new_rows/2);
1261 }
1262 old_origin += first_copied_row * old_row_size;
1263 } else
1264 first_copied_row = 0;
1265 end = old_origin + old_row_size * min(old_rows, new_rows);
1266
1267 vc_uniscr_copy_area(new_uniscr, new_cols, new_rows,
1268 get_vc_uniscr(vc), rlth/2, first_copied_row,
1269 min(old_rows, new_rows));
1270 vc_uniscr_set(vc, new_uniscr);
1271
1272 update_attr(vc);
1273
1274 while (old_origin < end) {
1275 scr_memcpyw((unsigned short *) new_origin,
1276 (unsigned short *) old_origin, rlth);
1277 if (rrem)
1278 scr_memsetw((void *)(new_origin + rlth),
1279 vc->vc_video_erase_char, rrem);
1280 old_origin += old_row_size;
1281 new_origin += new_row_size;
1282 }
1283 if (new_scr_end > new_origin)
1284 scr_memsetw((void *)new_origin, vc->vc_video_erase_char,
1285 new_scr_end - new_origin);
1286 kfree(vc->vc_screenbuf);
1287 vc->vc_screenbuf = newscreen;
1288 vc->vc_screenbuf_size = new_screen_size;
1289 set_origin(vc);
1290
1291 /* do part of a reset_terminal() */
1292 vc->vc_top = 0;
1293 vc->vc_bottom = vc->vc_rows;
1294 gotoxy(vc, vc->vc_x, vc->vc_y);
1295 save_cur(vc);
1296
1297 if (tty) {
1298 /* Rewrite the requested winsize data with the actual
1299 resulting sizes */
1300 struct winsize ws;
1301 memset(&ws, 0, sizeof(ws));
1302 ws.ws_row = vc->vc_rows;
1303 ws.ws_col = vc->vc_cols;
1304 ws.ws_ypixel = vc->vc_scan_lines;
1305 tty_do_resize(tty, &ws);
1306 }
1307
1308 if (con_is_visible(vc))
1309 update_screen(vc);
1310 vt_event_post(VT_EVENT_RESIZE, vc->vc_num, vc->vc_num);
1311 notify_update(vc);
1312 return err;
1313 }
1314
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 20091 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-06-17 16:15 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-15 6:24 drivers/tty/vt/vt.c:1210:22: warning: comparison is always false due to limited range of data type kernel test robot
2020-06-15 6:24 ` kernel test robot
2020-06-17 16:15 ` Nicolas Pitre
-- strict thread matches above, loose matches on Subject: below --
2020-06-13 22:31 kernel test robot
2020-05-19 2:33 kbuild test robot
2020-05-19 2:33 ` kbuild test robot
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.