diff --git a/lustre/include/liblustre.h b/lustre/include/liblustre.h
index a96bc33b6844217f148a06a683665d1e73610216..4a89f5049834d46be184efe400f73e68df88096c 100644
--- a/lustre/include/liblustre.h
+++ b/lustre/include/liblustre.h
@@ -706,7 +706,7 @@ typedef struct { volatile int counter; } atomic_t;
 #define atomic_inc(a)  (((a)->counter)++)
 #define atomic_dec(a)  do { (a)->counter--; } while (0)
 #define atomic_add(b,a)  do {(a)->counter += b;} while (0)
-#define atomic_add_return(n,a) ((a)->counter = n)
+#define atomic_add_return(n,a) ((a)->counter += n)
 #define atomic_inc_return(a) atomic_add_return(1,a)
 #define atomic_sub(b,a)  do {(a)->counter -= b;} while (0)
 #define atomic_sub_return(n,a) ((a)->counter -= n)