Linux: Fix AFS_NORETURN violation with osi_AssertFailK

Commit d86f0c44d3 changed the
AFS_LINUX26_ENV implementation of osi_AssertFailK so that it returns,
contradicting its AFS_NORETURN prototype, in an effort to make the
following BUG() display the right line number.  To fix this, move the
returning implementation into its only caller, the osi_Assert macro.

This fixes possible compiler misoptimizations due to

rx_kcommon.c:255:1: warning: ‘noreturn’ function does return

Change-Id: Ibbcc630037002ce4659e2e6a36b39d271f9bdc58
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
Reviewed-on: http://gerrit.openafs.org/3276
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
This commit is contained in:
Anders Kaseorg 2010-11-06 03:03:19 -04:00 committed by Derrick Brashear
parent acfc61eca8
commit 1519144f83
2 changed files with 3 additions and 7 deletions

View File

@ -247,12 +247,6 @@ osi_AssertFailK(const char *expr, const char *file, int line)
osi_Panic("%s", buf);
}
#else
void
osi_AssertFailK(const char *expr, const char *file, int line)
{
printk(KERN_CRIT "assertion failed: %s, file: %s, line: %d\n", expr, file, line);
}
#endif
#ifndef UKERNEL

View File

@ -377,7 +377,7 @@ extern osi_socket rxi_GetHostUDPSocket(u_int host, u_short port);
# define osi_Panic(msg...) do { printk(KERN_CRIT "openafs: " msg); BUG(); } while (0)
# undef osi_Assert
# define osi_Assert(expr) \
do { if (!(expr)) { osi_AssertFailK(#expr, __FILE__, __LINE__); BUG(); } } while (0)
do { if (!(expr)) osi_Panic("assertion failed: %s, file: %s, line: %d\n", #expr, __FILE__, __LINE__); } while (0)
# elif defined(AFS_AIX_ENV)
extern void osi_Panic(char *fmt, void *a1, void *a2, void *a3);
# else
@ -403,7 +403,9 @@ extern int rxk_ReadPacket(osi_socket so, struct rx_packet *p, int *host,
# ifdef UKERNEL
extern void *rx_ServerProc(void *);
# endif
# ifndef AFS_LINUX26_ENV
extern void osi_AssertFailK(const char *expr, const char *file, int line) AFS_NORETURN;
# endif
extern void rxk_ListenerProc(void);
extern void rxk_Listener(void);
# ifndef UKERNEL