This patch prevents that older compilers report the following warning:

f2fs_format.c: In function ‘f2fs_prepare_super_block’:
../include/f2fs_fs.h:350:26: error: conversion from ‘unsigned int’ to 
‘__uint16_t’ {aka ‘short unsigned int’} changes value from ‘4076150800’ to 
‘8208’ [-Werror=overflow]
  350 | #define F2FS_SUPER_MAGIC 0xF2F52010 /* F2FS Magic Number */
      |                          ^~~~~~~~~~
 ../include/f2fs_fs.h:574:49: note: in expansion of macro ‘cpu_to_le16’
  574 | #define set_sb_le16(member, val)  (sb->member = cpu_to_le16(val))
      |                                                 ^~~~~~~~~~~

Signed-off-by: Bart Van Assche <bvanass...@acm.org>
---
 include/f2fs_fs.h | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/include/f2fs_fs.h b/include/f2fs_fs.h
index 73dc48e25ec0..bc57dd07819a 100644
--- a/include/f2fs_fs.h
+++ b/include/f2fs_fs.h
@@ -579,14 +579,14 @@ struct f2fs_configuration {
 #define get_newsb_le32(member)                 le32_to_cpu(new_sb->member)
 #define get_newsb_le16(member)                 le16_to_cpu(new_sb->member)
 
-#define set_sb(member, val)    \
+#define set_sb(member, val)                                            \
                        do {                                            \
-                               typeof(sb->member) t;                   \
+                               typeof(sb->member) t = (val);           \
                                switch (sizeof(t)) {                    \
-                               case 8: set_sb_le64(member, val); break; \
-                               case 4: set_sb_le32(member, val); break; \
-                               case 2: set_sb_le16(member, val); break; \
-                               } \
+                               case 8: set_sb_le64(member, t); break;  \
+                               case 4: set_sb_le32(member, t); break;  \
+                               case 2: set_sb_le16(member, t); break;  \
+                               }                                       \
                        } while(0)
 
 #define get_sb(member)         \
@@ -617,14 +617,14 @@ struct f2fs_configuration {
 #define get_cp_le32(member)                    le32_to_cpu(cp->member)
 #define get_cp_le16(member)                    le16_to_cpu(cp->member)
 
-#define set_cp(member, val)    \
+#define set_cp(member, val)                                            \
                        do {                                            \
-                               typeof(cp->member) t;                   \
+                               typeof(cp->member) t = (val);           \
                                switch (sizeof(t)) {                    \
-                               case 8: set_cp_le64(member, val); break; \
-                               case 4: set_cp_le32(member, val); break; \
-                               case 2: set_cp_le16(member, val); break; \
-                               } \
+                               case 8: set_cp_le64(member, t); break;  \
+                               case 4: set_cp_le32(member, t); break;  \
+                               case 2: set_cp_le16(member, t); break;  \
+                               }                                       \
                        } while(0)
 
 #define get_cp(member)         \


_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to