]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Linux: Fix AFS_NORETURN violation with osi_AssertFailK
authorAnders Kaseorg <andersk@mit.edu>
Sat, 6 Nov 2010 07:03:19 +0000 (03:03 -0400)
committerDerrick Brashear <shadow@dementia.org>
Mon, 13 Dec 2010 23:53:01 +0000 (15:53 -0800)
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>
src/rx/rx_kcommon.c
src/rx/rx_prototypes.h

index c63b8b3e21974674199ca6e2bba2875170c89510..e335308c9cb99727f0b11a26289f37ef7ff28dbd 100644 (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
index 8d9e736f7856ccbf1f92e92f4dbf48ab2a2ae798..21eada6e45f793e5865886905593222c0e5199e9 100644 (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