Messages in this thread | | | Date | Thu, 10 Mar 2016 23:48:01 +0100 | From | Alexandre Belloni <> | Subject | Re: [PATCH] rtc: ds1685: actually spin forever in poweroff error path |
| |
On 07/03/2016 at 09:03:02 -0600, Josh Poimboeuf wrote : > objtool reports the following warnings: > > drivers/rtc/rtc-ds1685.o: warning: objtool: ds1685_rtc_work_queue()+0x0: duplicate frame pointer save > drivers/rtc/rtc-ds1685.o: warning: objtool: ds1685_rtc_work_queue()+0x3: duplicate frame pointer setup > drivers/rtc/rtc-ds1685.o: warning: objtool: ds1685_rtc_work_queue()+0x0: frame pointer state mismatch > > The warning message needs to be improved, but what it really means in > this case is that ds1685_rtc_poweroff() has a possible code path where > it can actually fall through to the next function in the object code, > ds1685_rtc_work_queue(). > > The bug is caused by the use of the unreachable() macro in a place which > is actually reachable. That causes gcc to assume that the printk() > immediately before the unreachable() macro never returns, when in fact > it does. So gcc places the printk() at the very end of the function's > object code. When the printk() returns, the next function starts > executing. > > The surrounding comment and printk message state that the code should > spin forever, which explains the unreachable() statement. However the > actual spin code is missing. > > Reported-by: kbuild test robot <fengguang.wu@intel.com> > Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> > --- > drivers/rtc/rtc-ds1685.c | 1 + > 1 file changed, 1 insertion(+) > Applied, thanks.
-- Alexandre Belloni, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
| |