Skip to contentSkip to conversation

ROMFS: romfs_iget() - unsigned ino >= 0 is always true

PATCH New roel kluin 1 participant 1 message Nov 29, 2008

lore
Share & tools
lore

roel kluin

author
#0 lore raw

PATCH 1/1 ROMFS: romfs_iget() - unsigned ino >= 0 is always true

romfs_strnlen() returns int
unsigned X >= 0 is always true

---
for romfs_strnlen(), see
vi fs/romfs/inode.c +200

fs/romfs/inode.c +4 -4
index 60d2f82..28b180b 100644
@@ -490,7 +490,7 @@ static mode_t romfs_modemap[] =
 static struct inode *
 romfs_iget(struct super_block *sb, unsigned long ino)
 {
-	int nextfh;
+	int nextfh, ret;
 	struct romfs_inode ri;
 	struct inode *i;
 
@@ -527,9 +527,9 @@ romfs_iget(struct super_block *sb, unsigned long ino)
 	i->i_uid = i->i_gid = 0;
 
         /* Precalculate the data offset */
-        ino = romfs_strnlen(i, ino+ROMFH_SIZE, ROMFS_MAXFN);
-        if (ino >= 0)
-                ino = ((ROMFH_SIZE+ino+1+ROMFH_PAD)&ROMFH_MASK);
+        ret = romfs_strnlen(i, ino+ROMFH_SIZE, ROMFS_MAXFN);
+        if (ret >= 0)
+                ino = ((ROMFH_SIZE+ret+1+ROMFH_PAD)&ROMFH_MASK);
         else
                 ino = 0;