To be sure that we're not introducing compilation regressions on media, I'm now using ktest to check for errors/warnings. My current setup is cross-building on several architectures: alpha, arm, avr32, cris (64), frv, i386, ia64, m32r, m68k, mips, openrisc, parisc, s390, sh, sparc, sparc64, uml, x86_64 I tried to enable a few other archs: blackfin, cris (32), powerpc (32, 64), tile, xtensa but they fail to compile with allyesconfig due to non-media related issues. I'm still unsure about how often I'll be doing it, I intend to run it at least by the end of the subsystem merge window (by -rc6 or -rc7), and fix the issues found there. This series contain the fixes for most complains. I didn't fix, however, the issues pointed on s390 arch: /devel/v4l/ktest-build/drivers/media/dvb-frontends/af9013.c:77:1: warning: 'af9013_wr_regs_i2c' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/af9033.c:188:1: warning: 'af9033_wr_reg_val_tab' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/af9033.c:68:1: warning: 'af9033_wr_regs' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/bcm3510.c:230:1: warning: 'bcm3510_do_hab_cmd' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/cxd2820r_core.c:51:1: warning: 'cxd2820r_wr_regs_i2c.isra.0' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/cxd2820r_core.c:84:1: warning: 'cxd2820r_rd_regs_i2c.isra.1' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/itd1000.c:69:1: warning: 'itd1000_write_regs.constprop.0' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/mt312.c:126:1: warning: 'mt312_write' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/nxt200x.c:111:1: warning: 'nxt200x_writebytes' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/rtl2830.c:56:1: warning: 'rtl2830_wr' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/rtl2832.c:187:1: warning: 'rtl2832_wr' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/s5h1420.c:851:1: warning: 's5h1420_tuner_i2c_tuner_xfer' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/stb0899_drv.c:540:1: warning: 'stb0899_write_regs' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/stb6100.c:216:1: warning: 'stb6100_write_reg_range.constprop.3' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/stv0367.c:791:1: warning: 'stv0367_writeregs.constprop.4' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/stv090x.c:750:1: warning: 'stv090x_write_regs.constprop.6' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/stv6110.c:98:1: warning: 'stv6110_write_regs' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/stv6110x.c:85:1: warning: 'stv6110x_write_regs' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/tda10071.c:52:1: warning: 'tda10071_wr_regs' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/tda10071.c:84:1: warning: 'tda10071_rd_regs' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/tda18271c2dd.c:147:1: warning: 'WriteRegs' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/dvb-frontends/zl10039.c:119:1: warning: 'zl10039_write' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/pci/cx23885/cimax2.c:149:1: warning: 'netup_write_i2c' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/pci/ttpci/av7110_hw.c:510:1: warning: 'av7110_fw_cmd' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/tuners/e4000.c:50:1: warning: 'e4000_wr_regs' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/tuners/e4000.c:83:1: warning: 'e4000_rd_regs' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/tuners/fc2580.c:66:1: warning: 'fc2580_wr_regs.constprop.1' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/tuners/fc2580.c:98:1: warning: 'fc2580_rd_regs.constprop.0' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/tuners/tda18212.c:57:1: warning: 'tda18212_wr_regs' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/tuners/tda18212.c:90:1: warning: 'tda18212_rd_regs.constprop.0' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/tuners/tda18218.c:60:1: warning: 'tda18218_wr_regs' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/tuners/tda18218.c:92:1: warning: 'tda18218_rd_regs.constprop.0' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/tuners/tuner-xc2028.c:651:1: warning: 'load_firmware' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/usb/dvb-usb/cxusb.c:209:1: warning: 'cxusb_i2c_xfer' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/usb/dvb-usb/cxusb.c:69:1: warning: 'cxusb_ctrl_msg' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/usb/dvb-usb/dibusb-common.c:124:1: warning: 'dibusb_i2c_msg' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/usb/dvb-usb/dw2102.c:368:1: warning: 'dw2102_earda_i2c_transfer' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/usb/dvb-usb/dw2102.c:449:1: warning: 'dw2104_i2c_transfer' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/usb/dvb-usb/dw2102.c:512:1: warning: 'dw3101_i2c_transfer' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/usb/dvb-usb/dw2102.c:621:1: warning: 's6x0_i2c_transfer' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/usb/dvb-usb-v2/af9015.c:433:1: warning: 'af9015_eeprom_hash' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/usb/dvb-usb-v2/af9035.c:142:1: warning: 'af9035_wr_regs' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/usb/dvb-usb-v2/af9035.c:305:1: warning: 'af9035_i2c_master_xfer' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/usb/dvb-usb-v2/mxl111sf.c:74:1: warning: 'mxl111sf_ctrl_msg' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/media/v4l2-core/v4l2-async.c:238:1: warning: 'v4l2_async_notifier_unregister' uses dynamic stack allocation [enabled by default] /devel/v4l/ktest-build/drivers/staging/media/lirc/lirc_zilog.c:967:1: warning: 'read' uses dynamic stack allocation [enabled by default] Those warnings are all related to dynamic static allocation, like: int function_foo(int size) { char buf[size]; ... } The risk of doing it is that the Kernel stack is very small. Allocing a large amount of data at stack is risky, as it could cause stack overflows. So, this kind of struct should be used only when the code is very carefully reviewed, and the size doesn't come from userspace. Also, by using dynamic stack allocation, the gcc check for the max stack size doesn't work. So, I'll likely send a new series addressing them. My goal is to not have even a single warning/error reported by ktest. For now, please review the following series, as it would be good to have at lease a second pair of eyes on them, as they are compile-tested only. Thanks! Mauro. Mauro Carvalho Chehab (11): tda9887: remove an warning when compiling for alpha radio-shark: remove a warning when CONFIG_PM is not defined zoran: don't build it on alpha cx18: struct i2c_client is too big for stack tef6862: fix warning on avr32 arch iguanair: shut up a gcc warning on avr32 arch platform drivers: Fix build on cris and frv archs cx18: disable compilation on frv arch radio-si470x-i2c: fix a warning on ia64 rc: Fir warnings on m68k arch uvc/lirc_serial: Fix some warnings on parisc arch drivers/media/pci/cx18/Kconfig | 1 + drivers/media/pci/cx18/cx18-driver.c | 20 ++++++++++++-------- drivers/media/pci/zoran/Kconfig | 1 + drivers/media/platform/Kconfig | 2 ++ drivers/media/platform/soc_camera/Kconfig | 1 + drivers/media/radio/radio-shark.c | 2 ++ drivers/media/radio/radio-shark2.c | 2 ++ drivers/media/radio/si470x/radio-si470x-i2c.c | 4 ++-- drivers/media/radio/tef6862.c | 20 ++++++++++---------- drivers/media/rc/fintek-cir.h | 4 ++-- drivers/media/rc/iguanair.c | 1 + drivers/media/rc/nuvoton-cir.h | 4 ++-- drivers/media/tuners/tda9887.c | 4 ++-- drivers/media/usb/uvc/uvc_video.c | 2 +- drivers/staging/media/lirc/lirc_serial.c | 9 ++++++--- 15 files changed, 47 insertions(+), 30 deletions(-) -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html