]> www.infradead.org Git - users/hch/misc.git/commitdiff
ceph: fix wrong sizeof argument issue in register_session()
authorViacheslav Dubeyko <Slava.Dubeyko@ibm.com>
Fri, 6 Jun 2025 19:05:21 +0000 (12:05 -0700)
committerIlya Dryomov <idryomov@gmail.com>
Wed, 8 Oct 2025 21:30:46 +0000 (23:30 +0200)
The Coverity Scan service has detected the wrong sizeof
argument in register_session() [1]. The CID 1598909 defect
contains explanation: "The wrong sizeof value is used in
an expression or as argument to a function. The result is
an incorrect value that may cause unexpected program behaviors.
In register_session: The sizeof operator is invoked on
the wrong argument (CWE-569)".

The patch introduces a ptr_size variable that is initialized
by sizeof(struct ceph_mds_session *). And this variable is used
instead of sizeof(void *) in the code.

[1] https://scan5.scan.coverity.com/#/project-view/64304/10063?selectedIssue=1598909

Signed-off-by: Viacheslav Dubeyko <Slava.Dubeyko@ibm.com>
Reviewed-by: Alex Markuze <amarkuze@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/mds_client.c

index 3bc72b47fe4d4275713d9531a23a5fe44dc66088..aa2f74142cf4d59efca135f413dbc4d2ef7fe58f 100644 (file)
@@ -979,14 +979,15 @@ static struct ceph_mds_session *register_session(struct ceph_mds_client *mdsc,
        if (mds >= mdsc->max_sessions) {
                int newmax = 1 << get_count_order(mds + 1);
                struct ceph_mds_session **sa;
+               size_t ptr_size = sizeof(struct ceph_mds_session *);
 
                doutc(cl, "realloc to %d\n", newmax);
-               sa = kcalloc(newmax, sizeof(void *), GFP_NOFS);
+               sa = kcalloc(newmax, ptr_size, GFP_NOFS);
                if (!sa)
                        goto fail_realloc;
                if (mdsc->sessions) {
                        memcpy(sa, mdsc->sessions,
-                              mdsc->max_sessions * sizeof(void *));
+                              mdsc->max_sessions * ptr_size);
                        kfree(mdsc->sessions);
                }
                mdsc->sessions = sa;