CC: [email protected]
BCC: [email protected]
CC: Linux Memory Management List <[email protected]>
TO: Ricardo Ribalda <[email protected]>
CC: Mauro Carvalho Chehab <[email protected]>
CC: [email protected]
CC: Laurent Pinchart <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git 
master
head:   18c107a1f120d095404d141dfad8f594bdc44020
commit: 86f7ef77315687df144042762325c53d9a3a28c9 [10040/12552] media: uvcvideo: 
Add support for per-device control mapping overrides
:::::: branch date: 2 days ago
:::::: commit date: 8 days ago
config: xtensa-randconfig-m041-20220721 
(https://download.01.org/0day-ci/archive/20220724/[email protected]/config)
compiler: xtensa-linux-gcc (GCC) 12.1.0

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

smatch warnings:
drivers/media/usb/uvc/uvc_ctrl.c:2472 uvc_ctrl_init_ctrl() error: we previously 
assumed 'mapping' could be null (see line 2458)

vim +/mapping +2472 drivers/media/usb/uvc/uvc_ctrl.c

2bdd29cf3d4d32 drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2008-12-06  
2406  
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2407  /*
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2408   * Add control information and hardcoded stock control mappings to the 
given
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2409   * device.
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2410   */
866c6bdd5663d4 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2021-06-18  
2411  static void uvc_ctrl_init_ctrl(struct uvc_video_chain *chain,
866c6bdd5663d4 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2021-06-18  
2412                            struct uvc_control *ctrl)
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2413  {
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2414     const struct uvc_control_info *info = uvc_ctrls;
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2415     const struct uvc_control_info *iend = info + ARRAY_SIZE(uvc_ctrls);
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2416     const struct uvc_control_mapping *mapping = uvc_ctrl_mappings;
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2417     const struct uvc_control_mapping *mend =
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2418             mapping + ARRAY_SIZE(uvc_ctrl_mappings);
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2419  
699b9a86a3f03a drivers/media/usb/uvc/uvc_ctrl.c   Laurent Pinchart 2022-06-08  
2420     /*
699b9a86a3f03a drivers/media/usb/uvc/uvc_ctrl.c   Laurent Pinchart 2022-06-08  
2421      * XU controls initialization requires querying the device for control
52c58ad6f95ff6 drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-29  
2422      * information. As some buggy UVC devices will crash when queried
52c58ad6f95ff6 drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-29  
2423      * repeatedly in a tight loop, delay XU controls initialization until
52c58ad6f95ff6 drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-29  
2424      * first use.
52c58ad6f95ff6 drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-29  
2425      */
52c58ad6f95ff6 drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-29  
2426     if (UVC_ENTITY_TYPE(ctrl->entity) == UVC_VC_EXTENSION_UNIT)
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2427             return;
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2428  
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2429     for (; info < iend; ++info) {
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2430             if (uvc_entity_match_guid(ctrl->entity, info->entity) &&
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2431                 ctrl->index == info->index) {
866c6bdd5663d4 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2021-06-18  
2432                     uvc_ctrl_add_info(chain->dev, ctrl, info);
93df48d37c3f03 drivers/media/usb/uvc/uvc_ctrl.c   Hans de Goede    2020-07-28  
2433                     /*
93df48d37c3f03 drivers/media/usb/uvc/uvc_ctrl.c   Hans de Goede    2020-07-28  
2434                      * Retrieve control flags from the device. Ignore 
errors
93df48d37c3f03 drivers/media/usb/uvc/uvc_ctrl.c   Hans de Goede    2020-07-28  
2435                      * and work with default flag values from the uvc_ctrl
93df48d37c3f03 drivers/media/usb/uvc/uvc_ctrl.c   Hans de Goede    2020-07-28  
2436                      * array when the device doesn't properly implement
93df48d37c3f03 drivers/media/usb/uvc/uvc_ctrl.c   Hans de Goede    2020-07-28  
2437                      * GET_INFO on standard controls.
93df48d37c3f03 drivers/media/usb/uvc/uvc_ctrl.c   Hans de Goede    2020-07-28  
2438                      */
866c6bdd5663d4 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2021-06-18  
2439                     uvc_ctrl_get_flags(chain->dev, ctrl, &ctrl->info);
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2440                     break;
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2441              }
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2442     }
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2443  
071c8bb827c80a drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-29  
2444     if (!ctrl->initialized)
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2445             return;
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2446  
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2447     /*
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2448      * First check if the device provides a custom mapping for this 
control,
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2449      * used to override standard mappings for non-conformant devices. Don't
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2450      * process standard mappings if a custom mapping is found. This
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2451      * mechanism doesn't support combining standard and custom mappings for
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2452      * a single control.
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2453      */
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2454     if (chain->dev->info->mappings) {
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2455             bool custom = false;
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2456             unsigned int i;
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2457  
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07 
@2458             for (i = 0; (mapping = chain->dev->info->mappings[i]); ++i) {
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2459                     if (uvc_entity_match_guid(ctrl->entity, 
mapping->entity) &&
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2460                         ctrl->info.selector == mapping->selector) {
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2461                             __uvc_ctrl_add_mapping(chain, ctrl, mapping);
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2462                             custom = true;
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2463                     }
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2464             }
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2465  
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2466             if (custom)
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2467                     return;
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2468     }
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2469  
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2470     /* Process common mappings next. */
710871163510cd drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2471     for (; mapping < mend; ++mapping) {
710871163510cd drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07 
@2472             if (uvc_entity_match_guid(ctrl->entity, mapping->entity) &&
710871163510cd drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2473                 ctrl->info.selector == mapping->selector)
710871163510cd drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2474                     __uvc_ctrl_add_mapping(chain, ctrl, mapping);
710871163510cd drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2475     }
710871163510cd drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2476  
86f7ef77315687 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2477     /* Finally process version-specific mappings. */
710871163510cd drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2478     if (chain->dev->uvc_version < 0x0150) {
710871163510cd drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2479             mapping = uvc_ctrl_mappings_uvc11;
710871163510cd drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2480             mend = mapping + ARRAY_SIZE(uvc_ctrl_mappings_uvc11);
710871163510cd drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2481     } else {
710871163510cd drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2482             mapping = uvc_ctrl_mappings_uvc15;
710871163510cd drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2483             mend = mapping + ARRAY_SIZE(uvc_ctrl_mappings_uvc15);
710871163510cd drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2484     }
710871163510cd drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2022-06-07  
2485  
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2486     for (; mapping < mend; ++mapping) {
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2487             if (uvc_entity_match_guid(ctrl->entity, mapping->entity) &&
071c8bb827c80a drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-29  
2488                 ctrl->info.selector == mapping->selector)
866c6bdd5663d4 drivers/media/usb/uvc/uvc_ctrl.c   Ricardo Ribalda  2021-06-18  
2489                     __uvc_ctrl_add_mapping(chain, ctrl, mapping);
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2490     }
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2491  }
ba2fa99668bb9b drivers/media/video/uvc/uvc_ctrl.c Laurent Pinchart 2010-09-20  
2492  

:::::: The code at line 2472 was first introduced by commit
:::::: 710871163510cd78948a095e929e28c1434b4506 media: uvcvideo: Add missing 
value for power_line_frequency

:::::: TO: Ricardo Ribalda <[email protected]>
:::::: CC: Mauro Carvalho Chehab <[email protected]>

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to