Re: [hid:for-6.3/hid-sensor 2/4] drivers/hid/hid-sensor-custom.c:960:12: warning: stack frame size (1104) exceeds limit (1024) in 'hid_sensor_custom_probe'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

does this mean the problem lies in 'hid_sensor_custom_probe' itself or
could this also be caused by local variables in nested functions.

I suspect the problem lies in 'hid_sensor_custom_get_known' where I put
an instance of 'struct hid_sensor_custom_properties' on the stack.

This struct is way too large (I didn't know there was a upper stack
limit of 1024). It's current size is sizeof(u16) * 3 *
HID_CUSTOM_MAX_FEATURE_BYTES = 384.

Would allocating it for the scope of 'hid_sensor_custom_get_known' make
sense?

Which kind of kernel allocation functions should I use here?  

Regards,
Philipp Jungkamp

On Fri, 2022-12-23 at 01:07 +0800, kernel test robot wrote:
> tree:  
> https://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git for-
> 6.3/hid-sensor
> head:   c8aca355bdd56e5dad55897cc419ea5d3e4c0e58
> commit: 48c79bb0abc0429751c0de6616224f8e4aa891cf [2/4] HID: hid-
> sensor-custom: Add LISS custom sensors
> config: i386-allyesconfig
> compiler: clang version 14.0.6
> (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e3
> 7457cb1d1)
> 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
>         #
> https://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git/commit/?id=48c79bb0abc0429751c0de6616224f8e4aa891cf
>         git remote add hid
> https://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git
>         git fetch --no-tags hid for-6.3/hid-sensor
>         git checkout 48c79bb0abc0429751c0de6616224f8e4aa891cf
>         # save the config file
>         mkdir build_dir && cp config build_dir/.config
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross
> W=1 O=build_dir ARCH=i386 olddefconfig
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross
> W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/hid/
> drivers/net/wireless/mediatek/mt76/mt7915/ drivers/video/backlight/
> 
> If you fix the issue, kindly add following tag where applicable
> > Reported-by: kernel test robot <lkp@xxxxxxxxx>
> 
> All warnings (new ones prefixed by >>):
> 
> > > drivers/hid/hid-sensor-custom.c:960:12: warning: stack frame size
> > > (1104) exceeds limit (1024) in 'hid_sensor_custom_probe' [-
> > > Wframe-larger-than]
>    static int hid_sensor_custom_probe(struct platform_device *pdev)
>               ^
>    1 warning generated.
> 
> 
> vim +/hid_sensor_custom_probe +960 drivers/hid/hid-sensor-custom.c
> 
> 239319670e2a7c Ye Xiang            2020-12-15   959  
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  @960  static int
> hid_sensor_custom_probe(struct platform_device *pdev)
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10   961  {
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10   962     struct
> hid_sensor_custom *sensor_inst;
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10   963     struct
> hid_sensor_hub_device *hsdev = pdev->dev.platform_data;
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10   964     int ret;
> 98c062e8245199 Philipp Jungkamp    2022-11-25   965     const struct
> hid_sensor_custom_match *match;
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10   966  
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10   967     sensor_inst =
> devm_kzalloc(&pdev->dev, sizeof(*sensor_inst),
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  
> 968                                GFP_KERNEL);
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10   969     if
> (!sensor_inst)
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  
> 970             return -ENOMEM;
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10   971  
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10   972     sensor_inst-
> >callbacks.capture_sample = hid_sensor_capture_sample;
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10   973     sensor_inst-
> >callbacks.send_event = hid_sensor_send_event;
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10   974     sensor_inst-
> >callbacks.pdev = pdev;
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10   975     sensor_inst-
> >hsdev = hsdev;
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10   976     sensor_inst-
> >pdev = pdev;
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  
> 977     mutex_init(&sensor_inst->mutex);
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  
> 978     platform_set_drvdata(pdev, sensor_inst);
> 239319670e2a7c Ye Xiang            2020-12-15   979  
> 98c062e8245199 Philipp Jungkamp    2022-11-25   980     ret =
> hid_sensor_custom_get_known(hsdev, &match);
> 98c062e8245199 Philipp Jungkamp    2022-11-25   981     if (!ret) {
> 239319670e2a7c Ye Xiang            2020-12-15  
> 982             sensor_inst->custom_pdev =
> 98c062e8245199 Philipp Jungkamp    2022-11-25  
> 983                     hid_sensor_register_platform_device(pdev,
> hsdev, match);
> 239319670e2a7c Ye Xiang            2020-12-15   984  
> 239319670e2a7c Ye Xiang            2020-12-15   985             ret =
> PTR_ERR_OR_ZERO(sensor_inst->custom_pdev);
> 239319670e2a7c Ye Xiang            2020-12-15   986             if
> (ret) {
> 239319670e2a7c Ye Xiang            2020-12-15  
> 987                     dev_err(&pdev->dev,
> 239319670e2a7c Ye Xiang            2020-12-15  
> 988                             "register_platform_device failed\n");
> 239319670e2a7c Ye Xiang            2020-12-15  
> 989                     return ret;
> 239319670e2a7c Ye Xiang            2020-12-15   990             }
> 239319670e2a7c Ye Xiang            2020-12-15   991  
> 239319670e2a7c Ye Xiang            2020-12-15  
> 992             return 0;
> 239319670e2a7c Ye Xiang            2020-12-15   993     }
> 239319670e2a7c Ye Xiang            2020-12-15   994  
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10   995     ret =
> sensor_hub_register_callback(hsdev, hsdev->usage,
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  
> 996                                        &sensor_inst->callbacks);
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10   997     if (ret < 0)
> {
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  
> 998             dev_err(&pdev->dev, "callback reg failed\n");
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  
> 999             return ret;
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1000     }
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1001  
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1002     ret =
> sysfs_create_group(&sensor_inst->pdev->dev.kobj,
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10 
> 1003                              &enable_sensor_attr_group);
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1004     if (ret)
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1005             goto
> err_remove_callback;
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1006  
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1007     ret =
> hid_sensor_custom_add_attributes(sensor_inst);
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1008     if (ret)
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1009             goto
> err_remove_group;
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1010  
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1011     ret =
> hid_sensor_custom_dev_if_add(sensor_inst);
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1012     if (ret)
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1013             goto
> err_remove_attributes;
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1014  
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1015     return 0;
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1016  
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1017 
> err_remove_attributes:
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10 
> 1018     hid_sensor_custom_remove_attributes(sensor_inst);
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1019 
> err_remove_group:
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10 
> 1020     sysfs_remove_group(&sensor_inst->pdev->dev.kobj,
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10 
> 1021                        &enable_sensor_attr_group);
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1022 
> err_remove_callback:
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10 
> 1023     sensor_hub_remove_callback(hsdev, hsdev->usage);
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1024  
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1025     return ret;
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1026  }
> 4a7de0519df5e8 Srinivas Pandruvada 2015-04-10  1027  
> 
> :::::: The code at line 960 was first introduced by commit
> :::::: 4a7de0519df5e8fb89cef6ee062330ffe4b50a4d HID: sensor: Custom
> and Generic sensor support
> 
> :::::: TO: Srinivas Pandruvada <srinivas.pandruvada@xxxxxxxxxxxxxxx>
> :::::: CC: Jiri Kosina <jkosina@xxxxxxx>
> 





[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux