ocfs2: fix sparse warnings
authorHeming Zhao <heming.zhao@suse.com>
Thu, 28 Mar 2024 12:52:03 +0000 (20:52 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 26 Apr 2024 04:07:04 +0000 (21:07 -0700)
1.
fs/ocfs2/localalloc.c:1224:41: warning: incorrect type in argument 1 (different base types)
fs/ocfs2/localalloc.c:1224:41:    expected unsigned long long val1
fs/ocfs2/localalloc.c:1224:41:    got restricted __le32 [usertype] la_bm_off

2.
fs/ocfs2/export.c:258:32: warning: cast to restricted __le32
fs/ocfs2/export.c:259:33: warning: cast to restricted __le32
fs/ocfs2/export.c:260:32: warning: cast to restricted __le32
fs/ocfs2/export.c:272:32: warning: cast to restricted __le32
fs/ocfs2/export.c:273:33: warning: cast to restricted __le32
fs/ocfs2/export.c:274:32: warning: cast to restricted __le32

3.
fs/ocfs2/inode.c:1623:13: warning: context imbalance in 'ocfs2_inode_cache_lock' - wrong count at exit
fs/ocfs2/inode.c:1630:13: warning: context imbalance in 'ocfs2_inode_cache_unlock' - unexpected unlock

4.
fs/ocfs2/refcounttree.c:633:27: warning: incorrect type in assignment (different base types)
fs/ocfs2/refcounttree.c:633:27:    expected restricted __le32 [usertype] rf_generation
fs/ocfs2/refcounttree.c:633:27:    got unsigned int

5.
fs/ocfs2/dlm/dlmdomain.c:1316:20: warning: context imbalance in 'dlm_query_nodeinfo_handler' - different lock contexts for basic block

Link: https://lkml.kernel.org/r/20240328125203.20892-5-heming.zhao@suse.com
Signed-off-by: Heming Zhao <heming.zhao@suse.com>
Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
Cc: Changwei Ge <gechangwei@live.cn>
Cc: Gang He <ghe@suse.com>
Cc: Joel Becker <jlbec@evilplan.org>
Cc: Jun Piao <piaojun@huawei.com>
Cc: Junxiao Bi <junxiao.bi@oracle.com>
Cc: Mark Fasheh <mark@fasheh.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/ocfs2/dlm/dlmdomain.c
fs/ocfs2/export.c
fs/ocfs2/inode.c
fs/ocfs2/localalloc.c
fs/ocfs2/refcounttree.c

index 5c04dde99981c77a9fa000f48e61a0081d9448bb..2e0a2f3382829cd63753002ede966df557c6591a 100644 (file)
@@ -1274,7 +1274,7 @@ static int dlm_query_nodeinfo_handler(struct o2net_msg *msg, u32 len,
 {
        struct dlm_query_nodeinfo *qn;
        struct dlm_ctxt *dlm = NULL;
-       int locked = 0, status = -EINVAL;
+       int status = -EINVAL;
 
        qn = (struct dlm_query_nodeinfo *) msg->buf;
 
@@ -1290,12 +1290,11 @@ static int dlm_query_nodeinfo_handler(struct o2net_msg *msg, u32 len,
        }
 
        spin_lock(&dlm->spinlock);
-       locked = 1;
        if (dlm->joining_node != qn->qn_nodenum) {
                mlog(ML_ERROR, "Node %d queried nodes on domain %s but "
                     "joining node is %d\n", qn->qn_nodenum, qn->qn_domain,
                     dlm->joining_node);
-               goto bail;
+               goto unlock;
        }
 
        /* Support for node query was added in 1.1 */
@@ -1305,14 +1304,14 @@ static int dlm_query_nodeinfo_handler(struct o2net_msg *msg, u32 len,
                     "but active dlm protocol is %d.%d\n", qn->qn_nodenum,
                     qn->qn_domain, dlm->dlm_locking_proto.pv_major,
                     dlm->dlm_locking_proto.pv_minor);
-               goto bail;
+               goto unlock;
        }
 
        status = dlm_match_nodes(dlm, qn);
 
+unlock:
+       spin_unlock(&dlm->spinlock);
 bail:
-       if (locked)
-               spin_unlock(&dlm->spinlock);
        spin_unlock(&dlm_domain_lock);
 
        return status;
index b8b6a191b5cb50de6a1a81f65e78fe1859a6aa1f..96b684763b3906c950a4cc86e8755eb6a48c5d21 100644 (file)
@@ -255,9 +255,9 @@ static struct dentry *ocfs2_fh_to_dentry(struct super_block *sb,
        if (fh_len < 3 || fh_type > 2)
                return NULL;
 
-       handle.ih_blkno = (u64)le32_to_cpu(fid->raw[0]) << 32;
-       handle.ih_blkno |= (u64)le32_to_cpu(fid->raw[1]);
-       handle.ih_generation = le32_to_cpu(fid->raw[2]);
+       handle.ih_blkno = (u64)le32_to_cpu((__force __le32)fid->raw[0]) << 32;
+       handle.ih_blkno |= (u64)le32_to_cpu((__force __le32)fid->raw[1]);
+       handle.ih_generation = le32_to_cpu((__force __le32)fid->raw[2]);
        return ocfs2_get_dentry(sb, &handle);
 }
 
@@ -269,9 +269,9 @@ static struct dentry *ocfs2_fh_to_parent(struct super_block *sb,
        if (fh_type != 2 || fh_len < 6)
                return NULL;
 
-       parent.ih_blkno = (u64)le32_to_cpu(fid->raw[3]) << 32;
-       parent.ih_blkno |= (u64)le32_to_cpu(fid->raw[4]);
-       parent.ih_generation = le32_to_cpu(fid->raw[5]);
+       parent.ih_blkno = (u64)le32_to_cpu((__force __le32)fid->raw[3]) << 32;
+       parent.ih_blkno |= (u64)le32_to_cpu((__force __le32)fid->raw[4]);
+       parent.ih_generation = le32_to_cpu((__force __le32)fid->raw[5]);
        return ocfs2_get_dentry(sb, &parent);
 }
 
index 999111bfc27178302209a6c8678735efeaa9faba..2cc5c99fe94167bd5c01e7fd050651ba4772a76d 100644 (file)
@@ -1621,6 +1621,7 @@ static struct super_block *ocfs2_inode_cache_get_super(struct ocfs2_caching_info
 }
 
 static void ocfs2_inode_cache_lock(struct ocfs2_caching_info *ci)
+__acquires(&oi->ip_lock)
 {
        struct ocfs2_inode_info *oi = cache_info_to_inode(ci);
 
@@ -1628,6 +1629,7 @@ static void ocfs2_inode_cache_lock(struct ocfs2_caching_info *ci)
 }
 
 static void ocfs2_inode_cache_unlock(struct ocfs2_caching_info *ci)
+__releases(&oi->ip_lock)
 {
        struct ocfs2_inode_info *oi = cache_info_to_inode(ci);
 
index c84ce53cdec03e4ba80668758d9275282c6b5b99..5df34561c551c6e1368f8665b9d9824f712ba51e 100644 (file)
@@ -336,7 +336,7 @@ int ocfs2_load_local_alloc(struct ocfs2_super *osb)
                     "found = %u, set = %u, taken = %u, off = %u\n",
                     num_used, le32_to_cpu(alloc->id1.bitmap1.i_used),
                     le32_to_cpu(alloc->id1.bitmap1.i_total),
-                    OCFS2_LOCAL_ALLOC(alloc)->la_bm_off);
+                    le32_to_cpu(OCFS2_LOCAL_ALLOC(alloc)->la_bm_off));
 
                status = -EINVAL;
                goto bail;
@@ -1214,7 +1214,7 @@ retry_enospc:
                             OCFS2_LOCAL_ALLOC(alloc)->la_bitmap);
 
        trace_ocfs2_local_alloc_new_window_result(
-               OCFS2_LOCAL_ALLOC(alloc)->la_bm_off,
+               le32_to_cpu(OCFS2_LOCAL_ALLOC(alloc)->la_bm_off),
                le32_to_cpu(alloc->id1.bitmap1.i_total));
 
 bail:
index 3f80a56d0d603c36599bc374d3f2ff092f010a91..1f303b1adf1ab94a2a70096197a5742425a796a8 100644 (file)
@@ -630,7 +630,7 @@ static int ocfs2_create_refcount_tree(struct inode *inode,
        rb->rf_records.rl_count =
                        cpu_to_le16(ocfs2_refcount_recs_per_rb(osb->sb));
        spin_lock(&osb->osb_lock);
-       rb->rf_generation = osb->s_next_generation++;
+       rb->rf_generation = cpu_to_le32(osb->s_next_generation++);
        spin_unlock(&osb->osb_lock);
 
        ocfs2_journal_dirty(handle, new_bh);