linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [kbuild-all] drivers/media/dvb-frontends/cxd2841er.c:2393:1: warning: the frame size of 2992 bytes is larger than 2048 bytes
@ 2015-09-29  6:49 Abylay Ospan
  2015-10-05 11:09 ` Fengguang Wu
  0 siblings, 1 reply; 8+ messages in thread
From: Abylay Ospan @ 2015-09-29  6:49 UTC (permalink / raw)
  To: Fengguang Wu
  Cc: linux-media, Kozlov Sergey, kbuild-all, Mauro Carvalho Chehab,
	Andrey Ryabinin

Hi Fengguang,

This is about 'Kernel Address sanitizer (KASan)'.

not only cxd2841 affected but some others:

drivers/media/tuners/r820t.c:1333:1: warning: the frame size of 2904
bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:1858:1: warning: the frame size
of 3008 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:2141:1: warning: the frame size
of 2104 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:2513:1: warning: the frame size
of 2304 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:4565:1: warning: the frame size
of 2096 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:1956:1: warning: the frame size
of 3264 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:1599:1: warning: the frame size
of 5296 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:1211:1: warning: the frame size
of 2080 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:4250:1: warning: the frame size
of 4840 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:4759:1: warning: the frame size
of 2056 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:1168:1: warning: the frame size
of 2080 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:2073:1: warning: the frame size
of 2552 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:3095:1: warning: the frame size
of 5864 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:3436:1: warning: the frame size
of 6816 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv0367.c:3147:1: warning: the frame size
of 4144 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/cxd2841er.c:2404:1: warning: the frame
size of 2984 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/cxd2841er.c:2282:1: warning: the frame
size of 4336 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/si2165.c:683:1: warning: the frame size of
2064 bytes is larger than 2048 bytes [-Wframe-larger-than=]

cause of this 'Kernel Address sanitizer (KASan)' is enabled in your
config. With gcc-4.9 kasan was disabled in compile time because of:
"scripts/Makefile.kasan:23: CONFIG_KASAN: compiler does not support
all options. Trying minimal configuration"

but with gcc-5 it's enabled.

and
objdump -d drivers/media/dvb-frontends/cxd2841er.o

shows that KASan adds some instructions to 'cxd2841er_sleep_tc' which
writes necessary data to -fasan-shadow-offset=0xdffffc0000000000:
    1476:       48 b8 00 00 00 00 00    movabs $0xdffffc0000000000,%rax
...
    14d3:       c7 00 f1 f1 f1 f1       movl   $0xf1f1f1f1,(%rax)
    14d9:       c7 40 04 01 f4 f4 f4    movl   $0xf4f4f401,0x4(%rax)
    14e0:       c7 40 08 f2 f2 f2 f2    movl   $0xf2f2f2f2,0x8(%rax)
    14e7:       c7 40 0c 01 f4 f4 f4    movl   $0xf4f4f401,0xc(%rax)
...

and function will grow and we get '-Wframe-larger-than=2048' warnings.

So, this warning looks normal  (until they less than 8K I think) for
configurations with KASan enabled.

I can suggest:
* ignore this warning if KASan enabled
* Increase -Wframe-larger-than=2048 to -Wframe-larger-than=8192 if
KASan enabled ( CONFIG_FRAME_WARN=8192 in kernel .config)


2015-09-25 12:46 GMT+03:00 Fengguang Wu <fengguang.wu@intel.com>:
> Hi Abylay,
>
> This warning can be reproduced with gcc-5.2:
>
> =============== commit a6dc60ff1 ===============
> /home/wfg/linux
> HEAD is now at a6dc60ff... [media] cxd2841er: Sony CXD2841ER DVB-S/S2/T/T2/C demodulator driver
> /home/wfg/linux/obj-compiletest
>
> make ARCH=x86_64 drivers/media/dvb-frontends/cxd2841er.o
>
> grep -a -F drivers/media/dvb-frontends/cxd2841er.c /tmp/build-err-a6dc60ff1209df29ee4668024e93d31f31421932-wfg --color
> ../drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_sleep_tc':
> ../drivers/media/dvb-frontends/cxd2841er.c:2393:1: warning: the frame size of 2992 bytes is larger than 2048 bytes [-Wframe-larger-than=]
>  }
>  ^
> ../drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_set_frontend_tc':
> ../drivers/media/dvb-frontends/cxd2841er.c:2274:1: warning: the frame size of 4336 bytes is larger than 2048 bytes [-Wframe-larger-than=]
>  }
>  ^
>
> =============== PREV commit e025273b86fb4a6440192b809e05332777c3faa5 ===============
> /home/wfg/linux
> Previous HEAD position was a6dc60ff... [media] cxd2841er: Sony CXD2841ER DVB-S/S2/T/T2/C demodulator driver
> HEAD is now at e025273... [media] lnbh25: LNBH25 SEC controller driver
> /home/wfg/linux/obj-compiletest
>
> make ARCH=x86_64 drivers/media/dvb-frontends/cxd2841er.o
>
> !!! BUILD ERROR !!!
> grep -a -F drivers/media/dvb-frontends/cxd2841er.c /tmp/build-err-e025273b86fb4a6440192b809e05332777c3faa5-wfg --color
>
> =============== linus/master linus/master ===============
> /home/wfg/linux
> Previous HEAD position was e025273... [media] lnbh25: LNBH25 SEC controller driver
> HEAD is now at 8e64a73... Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client
> /home/wfg/linux/obj-compiletest
>
> make ARCH=x86_64 drivers/media/dvb-frontends/cxd2841er.o
>
> grep -a -F drivers/media/dvb-frontends/cxd2841er.c /tmp/build-err-8e64a7331702b7888ccf84b2b9ff46ab8e167c7f-wfg --color
> ../drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_sleep_tc':
> ../drivers/media/dvb-frontends/cxd2841er.c:2401:1: warning: the frame size of 2984 bytes is larger than 2048 bytes [-Wframe-larger-than=]
>  }
>  ^
> ../drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_set_frontend_tc':
> ../drivers/media/dvb-frontends/cxd2841er.c:2282:1: warning: the frame size of 4336 bytes is larger than 2048 bytes [-Wframe-larger-than=]
>  }
>  ^
>
> Thanks,
> Fengguang
>
> On Fri, Sep 25, 2015 at 12:21:57PM +0300, Abylay Ospan wrote:
>> Hello,
>>
>> I cannot reproduce this warning. I'm compiling with your config and
>> following commands:
>>
>>   git checkout a6dc60ff1209df29ee4668024e93d31f31421932
>>   make ARCH=x86_64
>>
>> my gcc version is 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
>>
>> warning doesn't appear even if I set:
>> CONFIG_FRAME_WARN=128
>>
>> Please point me if problem still exist.
>>
>> thanks !
>>
>>
>>
>> 2015-09-17 9:05 GMT+03:00 kbuild test robot <fengguang.wu@intel.com>:
>> > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
>> > head:   72714841b705a5b9bccf37ee85a62352bee3a3ef
>> > commit: a6dc60ff1209df29ee4668024e93d31f31421932 [media] cxd2841er: Sony CXD2841ER DVB-S/S2/T/T2/C demodulator driver
>> > date:   5 weeks ago
>> > config: x86_64-randconfig-b0-09171322 (attached as .config)
>> > reproduce:
>> >   git checkout a6dc60ff1209df29ee4668024e93d31f31421932
>> >   # save the attached .config to linux build tree
>> >   make ARCH=x86_64
>> >
>> > All warnings (new ones prefixed by >>):
>> >
>> >    drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_sleep_tc':
>> >>> drivers/media/dvb-frontends/cxd2841er.c:2393:1: warning: the frame size of 2992 bytes is larger than 2048 bytes [-Wframe-larger-than=]
>> >     }
>> >     ^
>> >    drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_set_frontend_tc':
>> >    drivers/media/dvb-frontends/cxd2841er.c:2274:1: warning: the frame size of 4336 bytes is larger than 2048 bytes [-Wframe-larger-than=]
>> >     }
>> >     ^
>> >
>> > vim +2393 drivers/media/dvb-frontends/cxd2841er.c
>> >
>> >   2377                  case SYS_DVBC_ANNEX_A:
>> >   2378                          cxd2841er_active_c_to_sleep_tc(priv);
>> >   2379                          break;
>> >   2380                  default:
>> >   2381                          dev_warn(&priv->i2c->dev,
>> >   2382                                  "%s(): unknown delivery system %d\n",
>> >   2383                                  __func__, priv->system);
>> >   2384                  }
>> >   2385          }
>> >   2386          if (priv->state != STATE_SLEEP_TC) {
>> >   2387                  dev_err(&priv->i2c->dev, "%s(): invalid state %d\n",
>> >   2388                          __func__, priv->state);
>> >   2389                  return -EINVAL;
>> >   2390          }
>> >   2391          cxd2841er_sleep_tc_to_shutdown(priv);
>> >   2392          return 0;
>> >> 2393  }
>> >   2394
>> >   2395  static int cxd2841er_send_burst(struct dvb_frontend *fe,
>> >   2396                                  enum fe_sec_mini_cmd burst)
>> >   2397  {
>> >   2398          u8 data;
>> >   2399          struct cxd2841er_priv *priv  = fe->demodulator_priv;
>> >   2400
>> >   2401          dev_dbg(&priv->i2c->dev, "%s(): burst mode %s\n", __func__,
>> >
>> > ---
>> > 0-DAY kernel test infrastructure                Open Source Technology Center
>> > https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
>>
>>
>>
>> --
>> Abylay Ospan,
>> NetUP Inc.
>> http://www.netup.tv
>> _______________________________________________
>> kbuild-all mailing list
>> kbuild-all@lists.01.org
>> https://lists.01.org/mailman/listinfo/kbuild-all



-- 
Abylay Ospan,
NetUP Inc.
http://www.netup.tv

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [kbuild-all] drivers/media/dvb-frontends/cxd2841er.c:2393:1: warning: the frame size of 2992 bytes is larger than 2048 bytes
  2015-09-29  6:49 [kbuild-all] drivers/media/dvb-frontends/cxd2841er.c:2393:1: warning: the frame size of 2992 bytes is larger than 2048 bytes Abylay Ospan
@ 2015-10-05 11:09 ` Fengguang Wu
  2015-10-05 12:10   ` Andrey Ryabinin
  2015-10-16 16:02   ` [PATCH] Disable -Wframe-larger-than warnings with KASAN=y Andrey Ryabinin
  0 siblings, 2 replies; 8+ messages in thread
From: Fengguang Wu @ 2015-10-05 11:09 UTC (permalink / raw)
  To: Abylay Ospan
  Cc: Andrey Ryabinin, Mauro Carvalho Chehab, Kozlov Sergey,
	kbuild-all, linux-media, LKML

Hi Abylay,

> cause of this 'Kernel Address sanitizer (KASan)' is enabled in your
> config. With gcc-4.9 kasan was disabled in compile time because of:
> "scripts/Makefile.kasan:23: CONFIG_KASAN: compiler does not support
> all options. Trying minimal configuration"
> 
> but with gcc-5 it's enabled.
> 
> and
> objdump -d drivers/media/dvb-frontends/cxd2841er.o
> 
> shows that KASan adds some instructions to 'cxd2841er_sleep_tc' which
> writes necessary data to -fasan-shadow-offset=0xdffffc0000000000:
>     1476:       48 b8 00 00 00 00 00    movabs $0xdffffc0000000000,%rax
> ...
>     14d3:       c7 00 f1 f1 f1 f1       movl   $0xf1f1f1f1,(%rax)
>     14d9:       c7 40 04 01 f4 f4 f4    movl   $0xf4f4f401,0x4(%rax)
>     14e0:       c7 40 08 f2 f2 f2 f2    movl   $0xf2f2f2f2,0x8(%rax)
>     14e7:       c7 40 0c 01 f4 f4 f4    movl   $0xf4f4f401,0xc(%rax)
> ...
> 
> and function will grow and we get '-Wframe-larger-than=2048' warnings.
> 
> So, this warning looks normal  (until they less than 8K I think) for
> configurations with KASan enabled.
> 
> I can suggest:
> * ignore this warning if KASan enabled

Yes I can easily teach the kbuild robot to ignore this warning when
KASan enabled. Thanks for the explanations!

> * Increase -Wframe-larger-than=2048 to -Wframe-larger-than=8192 if
> KASan enabled ( CONFIG_FRAME_WARN=8192 in kernel .config)

Would it be possible to auto increase the threshold (in below Kconfig) when
KASan is enabled, so that all other developers/testers won't get the warnings,
too?

lib/Kconfig.debug

config FRAME_WARN
        int "Warn for stack frames larger than (needs gcc 4.4)"
        range 0 8192
        default 1024 if !64BIT
        default 2048 if 64BIT

Thanks,
Fengguang

> 2015-09-25 12:46 GMT+03:00 Fengguang Wu <fengguang.wu@intel.com>:
> > Hi Abylay,
> >
> > This warning can be reproduced with gcc-5.2:
> >
> > =============== commit a6dc60ff1 ===============
> > /home/wfg/linux
> > HEAD is now at a6dc60ff... [media] cxd2841er: Sony CXD2841ER DVB-S/S2/T/T2/C demodulator driver
> > /home/wfg/linux/obj-compiletest
> >
> > make ARCH=x86_64 drivers/media/dvb-frontends/cxd2841er.o
> >
> > grep -a -F drivers/media/dvb-frontends/cxd2841er.c /tmp/build-err-a6dc60ff1209df29ee4668024e93d31f31421932-wfg --color
> > ../drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_sleep_tc':
> > ../drivers/media/dvb-frontends/cxd2841er.c:2393:1: warning: the frame size of 2992 bytes is larger than 2048 bytes [-Wframe-larger-than=]
> >  }
> >  ^
> > ../drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_set_frontend_tc':
> > ../drivers/media/dvb-frontends/cxd2841er.c:2274:1: warning: the frame size of 4336 bytes is larger than 2048 bytes [-Wframe-larger-than=]
> >  }
> >  ^
> >
> > =============== PREV commit e025273b86fb4a6440192b809e05332777c3faa5 ===============
> > /home/wfg/linux
> > Previous HEAD position was a6dc60ff... [media] cxd2841er: Sony CXD2841ER DVB-S/S2/T/T2/C demodulator driver
> > HEAD is now at e025273... [media] lnbh25: LNBH25 SEC controller driver
> > /home/wfg/linux/obj-compiletest
> >
> > make ARCH=x86_64 drivers/media/dvb-frontends/cxd2841er.o
> >
> > !!! BUILD ERROR !!!
> > grep -a -F drivers/media/dvb-frontends/cxd2841er.c /tmp/build-err-e025273b86fb4a6440192b809e05332777c3faa5-wfg --color
> >
> > =============== linus/master linus/master ===============
> > /home/wfg/linux
> > Previous HEAD position was e025273... [media] lnbh25: LNBH25 SEC controller driver
> > HEAD is now at 8e64a73... Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client
> > /home/wfg/linux/obj-compiletest
> >
> > make ARCH=x86_64 drivers/media/dvb-frontends/cxd2841er.o
> >
> > grep -a -F drivers/media/dvb-frontends/cxd2841er.c /tmp/build-err-8e64a7331702b7888ccf84b2b9ff46ab8e167c7f-wfg --color
> > ../drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_sleep_tc':
> > ../drivers/media/dvb-frontends/cxd2841er.c:2401:1: warning: the frame size of 2984 bytes is larger than 2048 bytes [-Wframe-larger-than=]
> >  }
> >  ^
> > ../drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_set_frontend_tc':
> > ../drivers/media/dvb-frontends/cxd2841er.c:2282:1: warning: the frame size of 4336 bytes is larger than 2048 bytes [-Wframe-larger-than=]
> >  }
> >  ^
> >
> > Thanks,
> > Fengguang
> >
> > On Fri, Sep 25, 2015 at 12:21:57PM +0300, Abylay Ospan wrote:
> >> Hello,
> >>
> >> I cannot reproduce this warning. I'm compiling with your config and
> >> following commands:
> >>
> >>   git checkout a6dc60ff1209df29ee4668024e93d31f31421932
> >>   make ARCH=x86_64
> >>
> >> my gcc version is 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
> >>
> >> warning doesn't appear even if I set:
> >> CONFIG_FRAME_WARN=128
> >>
> >> Please point me if problem still exist.
> >>
> >> thanks !
> >>
> >>
> >>
> >> 2015-09-17 9:05 GMT+03:00 kbuild test robot <fengguang.wu@intel.com>:
> >> > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> >> > head:   72714841b705a5b9bccf37ee85a62352bee3a3ef
> >> > commit: a6dc60ff1209df29ee4668024e93d31f31421932 [media] cxd2841er: Sony CXD2841ER DVB-S/S2/T/T2/C demodulator driver
> >> > date:   5 weeks ago
> >> > config: x86_64-randconfig-b0-09171322 (attached as .config)
> >> > reproduce:
> >> >   git checkout a6dc60ff1209df29ee4668024e93d31f31421932
> >> >   # save the attached .config to linux build tree
> >> >   make ARCH=x86_64
> >> >
> >> > All warnings (new ones prefixed by >>):
> >> >
> >> >    drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_sleep_tc':
> >> >>> drivers/media/dvb-frontends/cxd2841er.c:2393:1: warning: the frame size of 2992 bytes is larger than 2048 bytes [-Wframe-larger-than=]
> >> >     }
> >> >     ^
> >> >    drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_set_frontend_tc':
> >> >    drivers/media/dvb-frontends/cxd2841er.c:2274:1: warning: the frame size of 4336 bytes is larger than 2048 bytes [-Wframe-larger-than=]
> >> >     }
> >> >     ^
> >> >
> >> > vim +2393 drivers/media/dvb-frontends/cxd2841er.c
> >> >
> >> >   2377                  case SYS_DVBC_ANNEX_A:
> >> >   2378                          cxd2841er_active_c_to_sleep_tc(priv);
> >> >   2379                          break;
> >> >   2380                  default:
> >> >   2381                          dev_warn(&priv->i2c->dev,
> >> >   2382                                  "%s(): unknown delivery system %d\n",
> >> >   2383                                  __func__, priv->system);
> >> >   2384                  }
> >> >   2385          }
> >> >   2386          if (priv->state != STATE_SLEEP_TC) {
> >> >   2387                  dev_err(&priv->i2c->dev, "%s(): invalid state %d\n",
> >> >   2388                          __func__, priv->state);
> >> >   2389                  return -EINVAL;
> >> >   2390          }
> >> >   2391          cxd2841er_sleep_tc_to_shutdown(priv);
> >> >   2392          return 0;
> >> >> 2393  }
> >> >   2394
> >> >   2395  static int cxd2841er_send_burst(struct dvb_frontend *fe,
> >> >   2396                                  enum fe_sec_mini_cmd burst)
> >> >   2397  {
> >> >   2398          u8 data;
> >> >   2399          struct cxd2841er_priv *priv  = fe->demodulator_priv;
> >> >   2400
> >> >   2401          dev_dbg(&priv->i2c->dev, "%s(): burst mode %s\n", __func__,
> >> >
> >> > ---
> >> > 0-DAY kernel test infrastructure                Open Source Technology Center
> >> > https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
> >>
> >>
> >>
> >> --
> >> Abylay Ospan,
> >> NetUP Inc.
> >> http://www.netup.tv
> >> _______________________________________________
> >> kbuild-all mailing list
> >> kbuild-all@lists.01.org
> >> https://lists.01.org/mailman/listinfo/kbuild-all
> 
> 
> 
> -- 
> Abylay Ospan,
> NetUP Inc.
> http://www.netup.tv
> _______________________________________________
> kbuild-all mailing list
> kbuild-all@lists.01.org
> https://lists.01.org/mailman/listinfo/kbuild-all

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [kbuild-all] drivers/media/dvb-frontends/cxd2841er.c:2393:1: warning: the frame size of 2992 bytes is larger than 2048 bytes
  2015-10-05 11:09 ` Fengguang Wu
@ 2015-10-05 12:10   ` Andrey Ryabinin
  2015-10-16 16:02   ` [PATCH] Disable -Wframe-larger-than warnings with KASAN=y Andrey Ryabinin
  1 sibling, 0 replies; 8+ messages in thread
From: Andrey Ryabinin @ 2015-10-05 12:10 UTC (permalink / raw)
  To: Fengguang Wu
  Cc: Abylay Ospan, Mauro Carvalho Chehab, Kozlov Sergey, kbuild-all,
	linux-media, LKML

2015-10-05 14:09 GMT+03:00 Fengguang Wu <fengguang.wu@intel.com>:
> Hi Abylay,
>
>> cause of this 'Kernel Address sanitizer (KASan)' is enabled in your
>> config. With gcc-4.9 kasan was disabled in compile time because of:
>> "scripts/Makefile.kasan:23: CONFIG_KASAN: compiler does not support
>> all options. Trying minimal configuration"
>>
>> but with gcc-5 it's enabled.
>>
>> and
>> objdump -d drivers/media/dvb-frontends/cxd2841er.o
>>
>> shows that KASan adds some instructions to 'cxd2841er_sleep_tc' which
>> writes necessary data to -fasan-shadow-offset=0xdffffc0000000000:
>>     1476:       48 b8 00 00 00 00 00    movabs $0xdffffc0000000000,%rax
>> ...
>>     14d3:       c7 00 f1 f1 f1 f1       movl   $0xf1f1f1f1,(%rax)
>>     14d9:       c7 40 04 01 f4 f4 f4    movl   $0xf4f4f401,0x4(%rax)
>>     14e0:       c7 40 08 f2 f2 f2 f2    movl   $0xf2f2f2f2,0x8(%rax)
>>     14e7:       c7 40 0c 01 f4 f4 f4    movl   $0xf4f4f401,0xc(%rax)
>> ...
>>
>> and function will grow and we get '-Wframe-larger-than=2048' warnings.
>>
>> So, this warning looks normal  (until they less than 8K I think) for
>> configurations with KASan enabled.
>>
>> I can suggest:
>> * ignore this warning if KASan enabled
>
> Yes I can easily teach the kbuild robot to ignore this warning when
> KASan enabled. Thanks for the explanations!
>
>> * Increase -Wframe-larger-than=2048 to -Wframe-larger-than=8192 if
>> KASan enabled ( CONFIG_FRAME_WARN=8192 in kernel .config)
>
> Would it be possible to auto increase the threshold (in below Kconfig) when
> KASan is enabled, so that all other developers/testers won't get the warnings,
> too?
>

Makes sense, although 8K is too much, I think. 6K probably enough.

> lib/Kconfig.debug
>
> config FRAME_WARN
>         int "Warn for stack frames larger than (needs gcc 4.4)"
>         range 0 8192
>         default 1024 if !64BIT
>         default 2048 if 64BIT
>
> Thanks,
> Fengguang
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH] Disable -Wframe-larger-than warnings with KASAN=y
  2015-10-05 11:09 ` Fengguang Wu
  2015-10-05 12:10   ` Andrey Ryabinin
@ 2015-10-16 16:02   ` Andrey Ryabinin
  2015-10-16 16:05     ` Abylay Ospan
  2015-10-16 16:47     ` Andi Kleen
  1 sibling, 2 replies; 8+ messages in thread
From: Andrey Ryabinin @ 2015-10-16 16:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: Ingo Molnar, Andi Kleen, Andrew Morton, Fengguang Wu,
	Mauro Carvalho Chehab, Kozlov Sergey, kbuild-all, linux-media,
	Abylay Ospan, Andrey Ryabinin

When the kernel compiled with KASAN=y, GCC adds redzones
for each variable on stack. This enlarges function's stack
frame and causes:
	'warning: the frame size of X bytes is larger than Y bytes'

The worst case I've seen for now is following:
 ../net/wireless/nl80211.c: In function ‘nl80211_send_wiphy’:
 ../net/wireless/nl80211.c:1731:1: warning: the frame size of 5448 bytes is larger than 2048 bytes [-Wframe-larger-than=]
  }
   ^
That kind of warning becomes useless with KASAN=y. It doesn't necessarily
indicate that there is some problem in the code, thus we should turn it off.

Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
---
 lib/Kconfig.debug | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index ab76b99..1d1521c 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -197,6 +197,7 @@ config ENABLE_MUST_CHECK
 config FRAME_WARN
 	int "Warn for stack frames larger than (needs gcc 4.4)"
 	range 0 8192
+	default 0 if KASAN
 	default 1024 if !64BIT
 	default 2048 if 64BIT
 	help
-- 
2.4.9


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] Disable -Wframe-larger-than warnings with KASAN=y
  2015-10-16 16:02   ` [PATCH] Disable -Wframe-larger-than warnings with KASAN=y Andrey Ryabinin
@ 2015-10-16 16:05     ` Abylay Ospan
  2015-10-16 16:47     ` Andi Kleen
  1 sibling, 0 replies; 8+ messages in thread
From: Abylay Ospan @ 2015-10-16 16:05 UTC (permalink / raw)
  To: Andrey Ryabinin
  Cc: linux-kernel, Ingo Molnar, Andi Kleen, Andrew Morton,
	Fengguang Wu, Mauro Carvalho Chehab, Kozlov Sergey, kbuild-all,
	linux-media

Hello,

Acked-by: Abylay Ospan <aospan@netup.ru>



2015-10-16 19:02 GMT+03:00 Andrey Ryabinin <aryabinin@virtuozzo.com>:
> When the kernel compiled with KASAN=y, GCC adds redzones
> for each variable on stack. This enlarges function's stack
> frame and causes:
>         'warning: the frame size of X bytes is larger than Y bytes'
>
> The worst case I've seen for now is following:
>  ../net/wireless/nl80211.c: In function ‘nl80211_send_wiphy’:
>  ../net/wireless/nl80211.c:1731:1: warning: the frame size of 5448 bytes is larger than 2048 bytes [-Wframe-larger-than=]
>   }
>    ^
> That kind of warning becomes useless with KASAN=y. It doesn't necessarily
> indicate that there is some problem in the code, thus we should turn it off.
>
> Reported-by: Fengguang Wu <fengguang.wu@intel.com>
> Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
> ---
>  lib/Kconfig.debug | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
> index ab76b99..1d1521c 100644
> --- a/lib/Kconfig.debug
> +++ b/lib/Kconfig.debug
> @@ -197,6 +197,7 @@ config ENABLE_MUST_CHECK
>  config FRAME_WARN
>         int "Warn for stack frames larger than (needs gcc 4.4)"
>         range 0 8192
> +       default 0 if KASAN
>         default 1024 if !64BIT
>         default 2048 if 64BIT
>         help
> --
> 2.4.9
>



-- 
Abylay Ospan,
NetUP Inc.
http://www.netup.tv

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Disable -Wframe-larger-than warnings with KASAN=y
  2015-10-16 16:02   ` [PATCH] Disable -Wframe-larger-than warnings with KASAN=y Andrey Ryabinin
  2015-10-16 16:05     ` Abylay Ospan
@ 2015-10-16 16:47     ` Andi Kleen
  2015-10-16 17:19       ` Andrey Ryabinin
  1 sibling, 1 reply; 8+ messages in thread
From: Andi Kleen @ 2015-10-16 16:47 UTC (permalink / raw)
  To: Andrey Ryabinin
  Cc: linux-kernel, Ingo Molnar, Andrew Morton, Fengguang Wu,
	Mauro Carvalho Chehab, Kozlov Sergey, kbuild-all, linux-media,
	Abylay Ospan

On Fri, Oct 16, 2015 at 07:02:10PM +0300, Andrey Ryabinin wrote:
> When the kernel compiled with KASAN=y, GCC adds redzones
> for each variable on stack. This enlarges function's stack
> frame and causes:
> 	'warning: the frame size of X bytes is larger than Y bytes'
> 
> The worst case I've seen for now is following:
>  ../net/wireless/nl80211.c: In function ‘nl80211_send_wiphy’:
>  ../net/wireless/nl80211.c:1731:1: warning: the frame size of 5448 bytes is larger than 2048 bytes [-Wframe-larger-than=]
>   }
>    ^
> That kind of warning becomes useless with KASAN=y. It doesn't necessarily
> indicate that there is some problem in the code, thus we should turn it off.

If KASAN is really bloating the stack that much you may need to consider
increasing the stack size with KASAN on. We have 16K now, but even that
may not be enough if you more than double it.

Otherwise it may just crash with KASAN on in more complex setups.

-Andi

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Disable -Wframe-larger-than warnings with KASAN=y
  2015-10-16 16:47     ` Andi Kleen
@ 2015-10-16 17:19       ` Andrey Ryabinin
  0 siblings, 0 replies; 8+ messages in thread
From: Andrey Ryabinin @ 2015-10-16 17:19 UTC (permalink / raw)
  To: Andi Kleen, Andrey Ryabinin
  Cc: linux-kernel, Ingo Molnar, Andrew Morton, Fengguang Wu,
	Mauro Carvalho Chehab, Kozlov Sergey, kbuild-all, linux-media,
	Abylay Ospan



16 октября 2015 г. 19:47:00 GMT+03:00, Andi Kleen <ak@linux.intel.com> пишет:
>On Fri, Oct 16, 2015 at 07:02:10PM +0300, Andrey Ryabinin wrote:
>> When the kernel compiled with KASAN=y, GCC adds redzones
>> for each variable on stack. This enlarges function's stack
>> frame and causes:
>> 	'warning: the frame size of X bytes is larger than Y bytes'
>> 
>> The worst case I've seen for now is following:
>>  ../net/wireless/nl80211.c: In function ‘nl80211_send_wiphy’:
>>  ../net/wireless/nl80211.c:1731:1: warning: the frame size of 5448
>bytes is larger than 2048 bytes [-Wframe-larger-than=]
>>   }
>>    ^
>> That kind of warning becomes useless with KASAN=y. It doesn't
>necessarily
>> indicate that there is some problem in the code, thus we should turn
>it off.
>
>If KASAN is really bloating the stack that much you may need to
>consider
>increasing the stack size with KASAN on. We have 16K now, but even that
>may not be enough if you more than double it.
>

Such huge bloat only in a few places, anyway it's done already. Stack is 32k with kasan.

>Otherwise it may just crash with KASAN on in more complex setups.
>
>-Andi
>--
>To unsubscribe from this list: send the line "unsubscribe linux-kernel"
>in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at  http://www.tux.org/lkml/


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [kbuild-all] drivers/media/dvb-frontends/cxd2841er.c:2393:1: warning: the frame size of 2992 bytes is larger than 2048 bytes
  2015-09-25  9:21 ` Abylay Ospan
@ 2015-09-25  9:46   ` Fengguang Wu
  0 siblings, 0 replies; 8+ messages in thread
From: Fengguang Wu @ 2015-09-25  9:46 UTC (permalink / raw)
  To: Abylay Ospan
  Cc: linux-media, Kozlov Sergey, kbuild-all, Mauro Carvalho Chehab

Hi Abylay,

This warning can be reproduced with gcc-5.2:

=============== commit a6dc60ff1 ===============
/home/wfg/linux
HEAD is now at a6dc60ff... [media] cxd2841er: Sony CXD2841ER DVB-S/S2/T/T2/C demodulator driver
/home/wfg/linux/obj-compiletest

make ARCH=x86_64 drivers/media/dvb-frontends/cxd2841er.o

grep -a -F drivers/media/dvb-frontends/cxd2841er.c /tmp/build-err-a6dc60ff1209df29ee4668024e93d31f31421932-wfg --color
../drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_sleep_tc':
../drivers/media/dvb-frontends/cxd2841er.c:2393:1: warning: the frame size of 2992 bytes is larger than 2048 bytes [-Wframe-larger-than=]
 }
 ^
../drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_set_frontend_tc':
../drivers/media/dvb-frontends/cxd2841er.c:2274:1: warning: the frame size of 4336 bytes is larger than 2048 bytes [-Wframe-larger-than=]
 }
 ^

=============== PREV commit e025273b86fb4a6440192b809e05332777c3faa5 ===============
/home/wfg/linux
Previous HEAD position was a6dc60ff... [media] cxd2841er: Sony CXD2841ER DVB-S/S2/T/T2/C demodulator driver
HEAD is now at e025273... [media] lnbh25: LNBH25 SEC controller driver
/home/wfg/linux/obj-compiletest

make ARCH=x86_64 drivers/media/dvb-frontends/cxd2841er.o

!!! BUILD ERROR !!!
grep -a -F drivers/media/dvb-frontends/cxd2841er.c /tmp/build-err-e025273b86fb4a6440192b809e05332777c3faa5-wfg --color

=============== linus/master linus/master ===============
/home/wfg/linux
Previous HEAD position was e025273... [media] lnbh25: LNBH25 SEC controller driver
HEAD is now at 8e64a73... Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client
/home/wfg/linux/obj-compiletest

make ARCH=x86_64 drivers/media/dvb-frontends/cxd2841er.o

grep -a -F drivers/media/dvb-frontends/cxd2841er.c /tmp/build-err-8e64a7331702b7888ccf84b2b9ff46ab8e167c7f-wfg --color
../drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_sleep_tc':
../drivers/media/dvb-frontends/cxd2841er.c:2401:1: warning: the frame size of 2984 bytes is larger than 2048 bytes [-Wframe-larger-than=]
 }
 ^
../drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_set_frontend_tc':
../drivers/media/dvb-frontends/cxd2841er.c:2282:1: warning: the frame size of 4336 bytes is larger than 2048 bytes [-Wframe-larger-than=]
 }
 ^

Thanks,
Fengguang

On Fri, Sep 25, 2015 at 12:21:57PM +0300, Abylay Ospan wrote:
> Hello,
> 
> I cannot reproduce this warning. I'm compiling with your config and
> following commands:
> 
>   git checkout a6dc60ff1209df29ee4668024e93d31f31421932
>   make ARCH=x86_64
> 
> my gcc version is 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
> 
> warning doesn't appear even if I set:
> CONFIG_FRAME_WARN=128
> 
> Please point me if problem still exist.
> 
> thanks !
> 
> 
> 
> 2015-09-17 9:05 GMT+03:00 kbuild test robot <fengguang.wu@intel.com>:
> > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > head:   72714841b705a5b9bccf37ee85a62352bee3a3ef
> > commit: a6dc60ff1209df29ee4668024e93d31f31421932 [media] cxd2841er: Sony CXD2841ER DVB-S/S2/T/T2/C demodulator driver
> > date:   5 weeks ago
> > config: x86_64-randconfig-b0-09171322 (attached as .config)
> > reproduce:
> >   git checkout a6dc60ff1209df29ee4668024e93d31f31421932
> >   # save the attached .config to linux build tree
> >   make ARCH=x86_64
> >
> > All warnings (new ones prefixed by >>):
> >
> >    drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_sleep_tc':
> >>> drivers/media/dvb-frontends/cxd2841er.c:2393:1: warning: the frame size of 2992 bytes is larger than 2048 bytes [-Wframe-larger-than=]
> >     }
> >     ^
> >    drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_set_frontend_tc':
> >    drivers/media/dvb-frontends/cxd2841er.c:2274:1: warning: the frame size of 4336 bytes is larger than 2048 bytes [-Wframe-larger-than=]
> >     }
> >     ^
> >
> > vim +2393 drivers/media/dvb-frontends/cxd2841er.c
> >
> >   2377                  case SYS_DVBC_ANNEX_A:
> >   2378                          cxd2841er_active_c_to_sleep_tc(priv);
> >   2379                          break;
> >   2380                  default:
> >   2381                          dev_warn(&priv->i2c->dev,
> >   2382                                  "%s(): unknown delivery system %d\n",
> >   2383                                  __func__, priv->system);
> >   2384                  }
> >   2385          }
> >   2386          if (priv->state != STATE_SLEEP_TC) {
> >   2387                  dev_err(&priv->i2c->dev, "%s(): invalid state %d\n",
> >   2388                          __func__, priv->state);
> >   2389                  return -EINVAL;
> >   2390          }
> >   2391          cxd2841er_sleep_tc_to_shutdown(priv);
> >   2392          return 0;
> >> 2393  }
> >   2394
> >   2395  static int cxd2841er_send_burst(struct dvb_frontend *fe,
> >   2396                                  enum fe_sec_mini_cmd burst)
> >   2397  {
> >   2398          u8 data;
> >   2399          struct cxd2841er_priv *priv  = fe->demodulator_priv;
> >   2400
> >   2401          dev_dbg(&priv->i2c->dev, "%s(): burst mode %s\n", __func__,
> >
> > ---
> > 0-DAY kernel test infrastructure                Open Source Technology Center
> > https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
> 
> 
> 
> -- 
> Abylay Ospan,
> NetUP Inc.
> http://www.netup.tv
> _______________________________________________
> kbuild-all mailing list
> kbuild-all@lists.01.org
> https://lists.01.org/mailman/listinfo/kbuild-all

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2015-10-16 17:19 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-29  6:49 [kbuild-all] drivers/media/dvb-frontends/cxd2841er.c:2393:1: warning: the frame size of 2992 bytes is larger than 2048 bytes Abylay Ospan
2015-10-05 11:09 ` Fengguang Wu
2015-10-05 12:10   ` Andrey Ryabinin
2015-10-16 16:02   ` [PATCH] Disable -Wframe-larger-than warnings with KASAN=y Andrey Ryabinin
2015-10-16 16:05     ` Abylay Ospan
2015-10-16 16:47     ` Andi Kleen
2015-10-16 17:19       ` Andrey Ryabinin
  -- strict thread matches above, loose matches on Subject: below --
2015-09-17  6:05 drivers/media/dvb-frontends/cxd2841er.c:2393:1: warning: the frame size of 2992 bytes is larger than 2048 bytes kbuild test robot
2015-09-25  9:21 ` Abylay Ospan
2015-09-25  9:46   ` [kbuild-all] " Fengguang Wu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).