Commit
d86f0c44d3c5910a6b54895484dc0286eac9bc73 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>
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
# 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
# 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