Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

ceph: fix wrong sizeof argument issue in register_session()

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>

authored by

Viacheslav Dubeyko and committed by
Ilya Dryomov
1ed4471a b7ed1e29

+3 -2
+3 -2
fs/ceph/mds_client.c
··· 979 979 if (mds >= mdsc->max_sessions) { 980 980 int newmax = 1 << get_count_order(mds + 1); 981 981 struct ceph_mds_session **sa; 982 + size_t ptr_size = sizeof(struct ceph_mds_session *); 982 983 983 984 doutc(cl, "realloc to %d\n", newmax); 984 - sa = kcalloc(newmax, sizeof(void *), GFP_NOFS); 985 + sa = kcalloc(newmax, ptr_size, GFP_NOFS); 985 986 if (!sa) 986 987 goto fail_realloc; 987 988 if (mdsc->sessions) { 988 989 memcpy(sa, mdsc->sessions, 989 - mdsc->max_sessions * sizeof(void *)); 990 + mdsc->max_sessions * ptr_size); 990 991 kfree(mdsc->sessions); 991 992 } 992 993 mdsc->sessions = sa;