Message ID | 5b7c72bdb52703bbfa5511ed500aed4babde1308.1716109606.git.christophe.jaillet@wanadoo.fr (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/2,net-next] libceph: Use sruct_size() in ceph_create_snap_context() | expand |
Hi Christophe, kernel test robot noticed the following build errors: [auto build test ERROR on net-next/main] url: https://github.com/intel-lab-lkp/linux/commits/Christophe-JAILLET/libceph-Use-__counted_by-in-struct-ceph_snap_context/20240519-172142 base: net-next/main patch link: https://lore.kernel.org/r/5b7c72bdb52703bbfa5511ed500aed4babde1308.1716109606.git.christophe.jaillet%40wanadoo.fr patch subject: [PATCH 1/2 net-next] libceph: Use sruct_size() in ceph_create_snap_context() config: i386-allmodconfig (https://download.01.org/0day-ci/archive/20240519/202405191909.7qhhefnu-lkp@intel.com/config) compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240519/202405191909.7qhhefnu-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202405191909.7qhhefnu-lkp@intel.com/ All errors (new ones prefixed by >>): net/ceph/snapshot.c: In function 'ceph_create_snap_context': >> net/ceph/snapshot.c:32:25: error: implicit declaration of function 'sruct_size'; did you mean 'struct_size'? [-Werror=implicit-function-declaration] 32 | snapc = kzalloc(sruct_size(snapc, snaps, snap_count), gfp_flags); | ^~~~~~~~~~ | struct_size >> net/ceph/snapshot.c:32:43: error: 'snaps' undeclared (first use in this function); did you mean 'snapc'? 32 | snapc = kzalloc(sruct_size(snapc, snaps, snap_count), gfp_flags); | ^~~~~ | snapc net/ceph/snapshot.c:32:43: note: each undeclared identifier is reported only once for each function it appears in cc1: some warnings being treated as errors vim +32 net/ceph/snapshot.c 11 12 /* 13 * Ceph snapshot contexts are reference counted objects, and the 14 * returned structure holds a single reference. Acquire additional 15 * references with ceph_get_snap_context(), and release them with 16 * ceph_put_snap_context(). When the reference count reaches zero 17 * the entire structure is freed. 18 */ 19 20 /* 21 * Create a new ceph snapshot context large enough to hold the 22 * indicated number of snapshot ids (which can be 0). Caller has 23 * to fill in snapc->seq and snapc->snaps[0..snap_count-1]. 24 * 25 * Returns a null pointer if an error occurs. 26 */ 27 struct ceph_snap_context *ceph_create_snap_context(u32 snap_count, 28 gfp_t gfp_flags) 29 { 30 struct ceph_snap_context *snapc; 31 > 32 snapc = kzalloc(sruct_size(snapc, snaps, snap_count), gfp_flags); 33 if (!snapc) 34 return NULL; 35 36 refcount_set(&snapc->nref, 1); 37 snapc->num_snaps = snap_count; 38 39 return snapc; 40 } 41 EXPORT_SYMBOL(ceph_create_snap_context); 42
Hi Christophe, kernel test robot noticed the following build errors: [auto build test ERROR on net-next/main] url: https://github.com/intel-lab-lkp/linux/commits/Christophe-JAILLET/libceph-Use-__counted_by-in-struct-ceph_snap_context/20240519-172142 base: net-next/main patch link: https://lore.kernel.org/r/5b7c72bdb52703bbfa5511ed500aed4babde1308.1716109606.git.christophe.jaillet%40wanadoo.fr patch subject: [PATCH 1/2 net-next] libceph: Use sruct_size() in ceph_create_snap_context() config: x86_64-rhel-8.3-rust (https://download.01.org/0day-ci/archive/20240519/202405191916.QmDasdJ5-lkp@intel.com/config) compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240519/202405191916.QmDasdJ5-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202405191916.QmDasdJ5-lkp@intel.com/ All errors (new ones prefixed by >>): >> net/ceph/snapshot.c:32:18: error: call to undeclared function 'sruct_size'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 32 | snapc = kzalloc(sruct_size(snapc, snaps, snap_count), gfp_flags); | ^ >> net/ceph/snapshot.c:32:36: error: use of undeclared identifier 'snaps'; did you mean 'snapc'? 32 | snapc = kzalloc(sruct_size(snapc, snaps, snap_count), gfp_flags); | ^~~~~ | snapc net/ceph/snapshot.c:30:28: note: 'snapc' declared here 30 | struct ceph_snap_context *snapc; | ^ 2 errors generated. vim +/sruct_size +32 net/ceph/snapshot.c 11 12 /* 13 * Ceph snapshot contexts are reference counted objects, and the 14 * returned structure holds a single reference. Acquire additional 15 * references with ceph_get_snap_context(), and release them with 16 * ceph_put_snap_context(). When the reference count reaches zero 17 * the entire structure is freed. 18 */ 19 20 /* 21 * Create a new ceph snapshot context large enough to hold the 22 * indicated number of snapshot ids (which can be 0). Caller has 23 * to fill in snapc->seq and snapc->snaps[0..snap_count-1]. 24 * 25 * Returns a null pointer if an error occurs. 26 */ 27 struct ceph_snap_context *ceph_create_snap_context(u32 snap_count, 28 gfp_t gfp_flags) 29 { 30 struct ceph_snap_context *snapc; 31 > 32 snapc = kzalloc(sruct_size(snapc, snaps, snap_count), gfp_flags); 33 if (!snapc) 34 return NULL; 35 36 refcount_set(&snapc->nref, 1); 37 snapc->num_snaps = snap_count; 38 39 return snapc; 40 } 41 EXPORT_SYMBOL(ceph_create_snap_context); 42
Le 19/05/2024 à 13:34, kernel test robot a écrit : > Hi Christophe, > > kernel test robot noticed the following build errors: > > [auto build test ERROR on net-next/main] > > url: https://github.com/intel-lab-lkp/linux/commits/Christophe-JAILLET/libceph-Use-__counted_by-in-struct-ceph_snap_context/20240519-172142 > base: net-next/main > patch link: https://lore.kernel.org/r/5b7c72bdb52703bbfa5511ed500aed4babde1308.1716109606.git.christophe.jaillet%40wanadoo.fr > patch subject: [PATCH 1/2 net-next] libceph: Use sruct_size() in ceph_create_snap_context() > config: i386-allmodconfig (https://download.01.org/0day-ci/archive/20240519/202405191909.7qhhefnu-lkp@intel.com/config) > compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0 > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240519/202405191909.7qhhefnu-lkp@intel.com/reproduce) > > If you fix the issue in a separate patch/commit (i.e. not just a new version of > the same patch/commit), kindly add following tags > | Reported-by: kernel test robot <lkp@intel.com> > | Closes: https://lore.kernel.org/oe-kbuild-all/202405191909.7qhhefnu-lkp@intel.com/ > > All errors (new ones prefixed by >>): > > net/ceph/snapshot.c: In function 'ceph_create_snap_context': >>> net/ceph/snapshot.c:32:25: error: implicit declaration of function 'sruct_size'; did you mean 'struct_size'? [-Werror=implicit-function-declaration] > 32 | snapc = kzalloc(sruct_size(snapc, snaps, snap_count), gfp_flags); > | ^~~~~~~~~~ > | struct_size >>> net/ceph/snapshot.c:32:43: error: 'snaps' undeclared (first use in this function); did you mean 'snapc'? > 32 | snapc = kzalloc(sruct_size(snapc, snaps, snap_count), gfp_flags); > | ^~~~~ > | snapc > net/ceph/snapshot.c:32:43: note: each undeclared identifier is reported only once for each function it appears in > cc1: some warnings being treated as errors > > > vim +32 net/ceph/snapshot.c > > 11 > 12 /* > 13 * Ceph snapshot contexts are reference counted objects, and the > 14 * returned structure holds a single reference. Acquire additional > 15 * references with ceph_get_snap_context(), and release them with > 16 * ceph_put_snap_context(). When the reference count reaches zero > 17 * the entire structure is freed. > 18 */ > 19 > 20 /* > 21 * Create a new ceph snapshot context large enough to hold the > 22 * indicated number of snapshot ids (which can be 0). Caller has > 23 * to fill in snapc->seq and snapc->snaps[0..snap_count-1]. > 24 * > 25 * Returns a null pointer if an error occurs. > 26 */ > 27 struct ceph_snap_context *ceph_create_snap_context(u32 snap_count, > 28 gfp_t gfp_flags) > 29 { > 30 struct ceph_snap_context *snapc; > 31 > > 32 snapc = kzalloc(sruct_size(snapc, snaps, snap_count), gfp_flags); Ouch! this was build-tested, but I must have made a mistake when editing the patch file to add the "net-next". Sorry about that. I'll resend when the net-next branch will re-open. CJ > 33 if (!snapc) > 34 return NULL; > 35 > 36 refcount_set(&snapc->nref, 1); > 37 snapc->num_snaps = snap_count; > 38 > 39 return snapc; > 40 } > 41 EXPORT_SYMBOL(ceph_create_snap_context); > 42 >
diff --git a/net/ceph/snapshot.c b/net/ceph/snapshot.c index e24315937c45..7363ccebee99 100644 --- a/net/ceph/snapshot.c +++ b/net/ceph/snapshot.c @@ -28,11 +28,8 @@ struct ceph_snap_context *ceph_create_snap_context(u32 snap_count, gfp_t gfp_flags) { struct ceph_snap_context *snapc; - size_t size; - size = sizeof (struct ceph_snap_context); - size += snap_count * sizeof (snapc->snaps[0]); - snapc = kzalloc(size, gfp_flags); + snapc = kzalloc(sruct_size(snapc, snaps, snap_count), gfp_flags); if (!snapc) return NULL;
Use sruct_size() instead of hand-writing it. This makes the code more readable and safer. Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> --- Compile tested only --- net/ceph/snapshot.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)