Hello Michał Mirosław, This is a semi-automatic email about new static checker warnings.
The patch 8b4c62aef6f6: "usb: gadget: u_serial: process RX in workqueue instead of tasklet" from Dec 16, 2018, leads to the following Smatch complaint: drivers/usb/gadget/function/u_serial.c:438 gs_rx_push() error: we previously assumed 'tty' could be null (see line 373) drivers/usb/gadget/function/u_serial.c 372 /* leave data queued if tty was rx throttled */ 373 if (tty && tty_throttled(tty)) ^^^^^^^^^^^^^^^^^^^^^^^^ Other checks for NULL 374 break; 375 376 switch (req->status) { 377 case -ESHUTDOWN: 378 disconnect = true; 379 pr_vdebug("ttyGS%d: shutdown\n", port->port_num); 380 break; 381 382 default: 383 /* presumably a transient fault */ 384 pr_warn("ttyGS%d: unexpected RX status %d\n", 385 port->port_num, req->status); 386 /* FALLTHROUGH */ 387 case 0: 388 /* normal completion */ 389 break; 390 } 391 392 /* push data to (open) tty */ 393 if (req->actual && tty) { 394 char *packet = req->buf; 395 unsigned size = req->actual; 396 unsigned n; 397 int count; 398 399 /* we may have pushed part of this packet already... */ 400 n = port->n_read; 401 if (n) { 402 packet += n; 403 size -= n; 404 } 405 406 count = tty_insert_flip_string(&port->port, packet, 407 size); 408 if (count) 409 do_push = true; 410 if (count != size) { 411 /* stop pushing; TTY layer can't handle more */ 412 port->n_read += count; 413 pr_vdebug("ttyGS%d: rx block %d/%d\n", 414 port->port_num, count, req->actual); 415 break; 416 } 417 port->n_read = 0; 418 } 419 420 list_move(&req->list, &port->read_pool); 421 port->read_started--; 422 } 423 424 /* Push from tty to ldisc; this is handled by a workqueue, 425 * so we won't get callbacks and can hold port_lock 426 */ 427 if (do_push) 428 tty_flip_buffer_push(&port->port); 429 430 431 /* We want our data queue to become empty ASAP, keeping data 432 * in the tty and ldisc (not here). If we couldn't push any 433 * this time around, RX may be starved, so wait until next jiffy. 434 * 435 * We may leave non-empty queue only when there is a tty, and 436 * either it is throttled or there is no more room in flip buffer. 437 */ 438 if (!list_empty(queue) && !tty_throttled(tty)) ^^^^^^^^^^^^^^^^^^^ in the original code there was check for NULL here but the patch removed it. 439 schedule_delayed_work(&port->push, 1); 440 regards, dan carpenter