Re: [PATCH 2/2] trigger: ledtrig-tty: add new line mode to triggers

From: kernel test robot
Date: Tue Sep 26 2023 - 16:34:43 EST


Hi Florian,

kernel test robot noticed the following build errors:

[auto build test ERROR on tty/tty-testing]
[also build test ERROR on tty/tty-next tty/tty-linus staging/staging-testing staging/staging-next staging/staging-linus linus/master v6.6-rc3 next-20230926]
[cannot apply to pavel-leds/for-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Florian-Eckert/tty-add-new-helper-function-tty_get_mget/20230926-180154
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git tty-testing
patch link: https://lore.kernel.org/r/20230926093607.59536-3-fe%40dev.tdt.de
patch subject: [PATCH 2/2] trigger: ledtrig-tty: add new line mode to triggers
config: x86_64-randconfig-161-20230927 (https://download.01.org/0day-ci/archive/20230927/202309270440.IJB24Xap-lkp@xxxxxxxxx/config)
compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230927/202309270440.IJB24Xap-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309270440.IJB24Xap-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

drivers/leds/trigger/ledtrig-tty.c: In function 'ledtrig_tty_work':
>> drivers/leds/trigger/ledtrig-tty.c:362:3: error: a label can only be part of a statement and a declaration is not a statement
unsigned long interval = LEDTRIG_TTY_INTERVAL;
^~~~~~~~


vim +362 drivers/leds/trigger/ledtrig-tty.c

270
271 static void ledtrig_tty_work(struct work_struct *work)
272 {
273 struct ledtrig_tty_data *trigger_data =
274 container_of(work, struct ledtrig_tty_data, dwork.work);
275 struct led_classdev *led_cdev = trigger_data->led_cdev;
276 struct serial_icounter_struct icount;
277 enum tty_led_state state;
278 int ret;
279
280 state = TTY_LED_DISABLE;
281 mutex_lock(&trigger_data->mutex);
282
283 if (!trigger_data->ttyname) {
284 /* exit without rescheduling */
285 mutex_unlock(&trigger_data->mutex);
286 return;
287 }
288
289 /* try to get the tty corresponding to $ttyname */
290 if (!trigger_data->tty) {
291 dev_t devno;
292 struct tty_struct *tty;
293 int ret;
294
295 ret = tty_dev_name_to_number(trigger_data->ttyname, &devno);
296 if (ret < 0)
297 /*
298 * A device with this name might appear later, so keep
299 * retrying.
300 */
301 goto out;
302
303 tty = tty_kopen_shared(devno);
304 if (IS_ERR(tty) || !tty)
305 /* What to do? retry or abort */
306 goto out;
307
308 trigger_data->tty = tty;
309 }
310
311 if (test_bit(LEDTRIG_TTY_MODE_CTS, &trigger_data->mode)) {
312 ret = ledtrig_tty_flag(trigger_data, TIOCM_CTS);
313 if (ret)
314 state = TTY_LED_ENABLE;
315 }
316
317 if (test_bit(LEDTRIG_TTY_MODE_DSR, &trigger_data->mode)) {
318 ret = ledtrig_tty_flag(trigger_data, TIOCM_DSR);
319 if (ret)
320 state = TTY_LED_ENABLE;
321 }
322
323 if (test_bit(LEDTRIG_TTY_MODE_CAR, &trigger_data->mode)) {
324 ret = ledtrig_tty_flag(trigger_data, TIOCM_CAR);
325 if (ret)
326 state = TTY_LED_ENABLE;
327 }
328
329 if (test_bit(LEDTRIG_TTY_MODE_RNG, &trigger_data->mode)) {
330 ret = ledtrig_tty_flag(trigger_data, TIOCM_RNG);
331 if (ret)
332 state = TTY_LED_ENABLE;
333 }
334
335 /* The rx/tx handling must come after the evaluation of TIOCM_*,
336 * since the display for rx/tx has priority
337 */
338 if (test_bit(LEDTRIG_TTY_MODE_TX, &trigger_data->mode) ||
339 test_bit(LEDTRIG_TTY_MODE_RX, &trigger_data->mode)) {
340 ret = tty_get_icount(trigger_data->tty, &icount);
341 if (ret) {
342 dev_info(trigger_data->tty->dev, "Failed to get icount, stopped polling\n");
343 mutex_unlock(&trigger_data->mutex);
344 return;
345 }
346
347 if (test_bit(LEDTRIG_TTY_MODE_TX, &trigger_data->mode) &&
348 (icount.tx != trigger_data->tx)) {
349 trigger_data->tx = icount.tx;
350 state = TTY_LED_BLINK;
351 }
352
353 if (test_bit(LEDTRIG_TTY_MODE_RX, &trigger_data->mode) &&
354 (icount.rx != trigger_data->rx)) {
355 trigger_data->rx = icount.rx;
356 state = TTY_LED_BLINK;
357 }
358 }
359
360 switch (state) {
361 case TTY_LED_BLINK:
> 362 unsigned long interval = LEDTRIG_TTY_INTERVAL;
363 led_blink_set_oneshot(trigger_data->led_cdev, &interval,
364 &interval, 0);
365 break;
366 case TTY_LED_ENABLE:
367 led_set_brightness(led_cdev, led_cdev->blink_brightness);
368 break;
369 case TTY_LED_DISABLE:
370 fallthrough;
371 default:
372 led_set_brightness(led_cdev, 0);
373 break;
374 }
375
376 out:
377 mutex_unlock(&trigger_data->mutex);
378 schedule_delayed_work(&trigger_data->dwork,
379 msecs_to_jiffies(LEDTRIG_TTY_INTERVAL * 2));
380 }
381

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki