Message ID | 1521174763-13282-1-git-send-email-kyle@spiers.me (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Mar 16, 2018 at 5:32 AM, Kyle Spiers <kyle@spiers.me> wrote: > As part of the effort to remove VLAs from the kernel[1], this moves > the literal values into the stack array calculation instead of using a > variable for the sizing. The resulting size can be found from > sizeof(buf). > > [1] https://lkml.org/lkml/2018/3/7/621 > > Signed-off-by: Kyle Spiers <kyle@spiers.me> > --- > drivers/block/rbd.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c > index 8e40da0..0e94e1f 100644 > --- a/drivers/block/rbd.c > +++ b/drivers/block/rbd.c > @@ -3100,8 +3100,8 @@ static int __rbd_notify_op_lock(struct rbd_device *rbd_dev, > { > struct ceph_osd_client *osdc = &rbd_dev->rbd_client->client->osdc; > struct rbd_client_id cid = rbd_get_cid(rbd_dev); > - int buf_size = 4 + 8 + 8 + CEPH_ENCODING_START_BLK_LEN; > - char buf[buf_size]; > + char buf[4 + 4 + 8 + 8 + CEPH_ENCODING_START_BLK_LEN]; Where is this extra 4 came from? > + int buf_size = sizeof(buf) A semicolon is missing here. Did you compile this patch? Thanks, Ilya -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Kyle, Thank you for the patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v4.16-rc5 next-20180316] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Kyle-Spiers/rbd-Remove-VLA-usage/20180317-131424 config: i386-randconfig-x017-201810 (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=i386 All errors (new ones prefixed by >>): drivers/block/rbd.c: In function '__rbd_notify_op_lock': >> drivers/block/rbd.c:3105:2: error: expected ',' or ';' before 'void' void *p = buf; ^~~~ >> drivers/block/rbd.c:3110:23: error: 'p' undeclared (first use in this function); did you mean 'up'? ceph_start_encoding(&p, 2, 1, buf_size - CEPH_ENCODING_START_BLK_LEN); ^ up drivers/block/rbd.c:3110:23: note: each undeclared identifier is reported only once for each function it appears in vim +3105 drivers/block/rbd.c b30a01f2a Ilya Dryomov 2014-05-22 3095 ed95b21a4 Ilya Dryomov 2016-08-12 3096 static int __rbd_notify_op_lock(struct rbd_device *rbd_dev, ed95b21a4 Ilya Dryomov 2016-08-12 3097 enum rbd_notify_op notify_op, ed95b21a4 Ilya Dryomov 2016-08-12 3098 struct page ***preply_pages, ed95b21a4 Ilya Dryomov 2016-08-12 3099 size_t *preply_len) b30a01f2a Ilya Dryomov 2014-05-22 3100 { 922dab613 Ilya Dryomov 2016-05-26 3101 struct ceph_osd_client *osdc = &rbd_dev->rbd_client->client->osdc; ed95b21a4 Ilya Dryomov 2016-08-12 3102 struct rbd_client_id cid = rbd_get_cid(rbd_dev); 1910cf8b5 Kyle Spiers 2018-03-15 3103 char buf[4 + 4 + 8 + 8 + CEPH_ENCODING_START_BLK_LEN]; 1910cf8b5 Kyle Spiers 2018-03-15 3104 int buf_size = sizeof(buf) ed95b21a4 Ilya Dryomov 2016-08-12 @3105 void *p = buf; b30a01f2a Ilya Dryomov 2014-05-22 3106 ed95b21a4 Ilya Dryomov 2016-08-12 3107 dout("%s rbd_dev %p notify_op %d\n", __func__, rbd_dev, notify_op); b30a01f2a Ilya Dryomov 2014-05-22 3108 ed95b21a4 Ilya Dryomov 2016-08-12 3109 /* encode *LockPayload NotifyMessage (op + ClientId) */ ed95b21a4 Ilya Dryomov 2016-08-12 @3110 ceph_start_encoding(&p, 2, 1, buf_size - CEPH_ENCODING_START_BLK_LEN); ed95b21a4 Ilya Dryomov 2016-08-12 3111 ceph_encode_32(&p, notify_op); ed95b21a4 Ilya Dryomov 2016-08-12 3112 ceph_encode_64(&p, cid.gid); ed95b21a4 Ilya Dryomov 2016-08-12 3113 ceph_encode_64(&p, cid.handle); 76756a51e Ilya Dryomov 2014-06-20 3114 ed95b21a4 Ilya Dryomov 2016-08-12 3115 return ceph_osdc_notify(osdc, &rbd_dev->header_oid, ed95b21a4 Ilya Dryomov 2016-08-12 3116 &rbd_dev->header_oloc, buf, buf_size, ed95b21a4 Ilya Dryomov 2016-08-12 3117 RBD_NOTIFY_TIMEOUT, preply_pages, preply_len); c525f0360 Ilya Dryomov 2016-04-28 3118 } c525f0360 Ilya Dryomov 2016-04-28 3119 :::::: The code at line 3105 was first introduced by commit :::::: ed95b21a4b0a71ef89306cdeb427d53cc9cb343f rbd: support for exclusive-lock feature :::::: TO: Ilya Dryomov <idryomov@gmail.com> :::::: CC: Ilya Dryomov <idryomov@gmail.com> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Hi Kyle,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on linus/master]
[also build test ERROR on v4.16-rc5 next-20180316]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Kyle-Spiers/rbd-Remove-VLA-usage/20180317-131424
config: x86_64-randconfig-s0-03171325 (attached as .config)
compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
All errors (new ones prefixed by >>):
drivers//block/rbd.c: In function '__rbd_notify_op_lock':
drivers//block/rbd.c:3105:2: error: expected ',' or ';' before 'void'
void *p = buf;
^~~~
>> drivers//block/rbd.c:3110:23: error: 'p' undeclared (first use in this function)
ceph_start_encoding(&p, 2, 1, buf_size - CEPH_ENCODING_START_BLK_LEN);
^
drivers//block/rbd.c:3110:23: note: each undeclared identifier is reported only once for each function it appears in
vim +/p +3110 drivers//block/rbd.c
b30a01f2a Ilya Dryomov 2014-05-22 3095
ed95b21a4 Ilya Dryomov 2016-08-12 3096 static int __rbd_notify_op_lock(struct rbd_device *rbd_dev,
ed95b21a4 Ilya Dryomov 2016-08-12 3097 enum rbd_notify_op notify_op,
ed95b21a4 Ilya Dryomov 2016-08-12 3098 struct page ***preply_pages,
ed95b21a4 Ilya Dryomov 2016-08-12 3099 size_t *preply_len)
b30a01f2a Ilya Dryomov 2014-05-22 3100 {
922dab613 Ilya Dryomov 2016-05-26 3101 struct ceph_osd_client *osdc = &rbd_dev->rbd_client->client->osdc;
ed95b21a4 Ilya Dryomov 2016-08-12 3102 struct rbd_client_id cid = rbd_get_cid(rbd_dev);
1910cf8b5 Kyle Spiers 2018-03-15 3103 char buf[4 + 4 + 8 + 8 + CEPH_ENCODING_START_BLK_LEN];
1910cf8b5 Kyle Spiers 2018-03-15 3104 int buf_size = sizeof(buf)
ed95b21a4 Ilya Dryomov 2016-08-12 @3105 void *p = buf;
b30a01f2a Ilya Dryomov 2014-05-22 3106
ed95b21a4 Ilya Dryomov 2016-08-12 3107 dout("%s rbd_dev %p notify_op %d\n", __func__, rbd_dev, notify_op);
b30a01f2a Ilya Dryomov 2014-05-22 3108
ed95b21a4 Ilya Dryomov 2016-08-12 3109 /* encode *LockPayload NotifyMessage (op + ClientId) */
ed95b21a4 Ilya Dryomov 2016-08-12 @3110 ceph_start_encoding(&p, 2, 1, buf_size - CEPH_ENCODING_START_BLK_LEN);
ed95b21a4 Ilya Dryomov 2016-08-12 3111 ceph_encode_32(&p, notify_op);
ed95b21a4 Ilya Dryomov 2016-08-12 3112 ceph_encode_64(&p, cid.gid);
ed95b21a4 Ilya Dryomov 2016-08-12 3113 ceph_encode_64(&p, cid.handle);
76756a51e Ilya Dryomov 2014-06-20 3114
ed95b21a4 Ilya Dryomov 2016-08-12 3115 return ceph_osdc_notify(osdc, &rbd_dev->header_oid,
ed95b21a4 Ilya Dryomov 2016-08-12 3116 &rbd_dev->header_oloc, buf, buf_size,
ed95b21a4 Ilya Dryomov 2016-08-12 3117 RBD_NOTIFY_TIMEOUT, preply_pages, preply_len);
c525f0360 Ilya Dryomov 2016-04-28 3118 }
c525f0360 Ilya Dryomov 2016-04-28 3119
:::::: The code at line 3110 was first introduced by commit
:::::: ed95b21a4b0a71ef89306cdeb427d53cc9cb343f rbd: support for exclusive-lock feature
:::::: TO: Ilya Dryomov <idryomov@gmail.com>
:::::: CC: Ilya Dryomov <idryomov@gmail.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index 8e40da0..0e94e1f 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c @@ -3100,8 +3100,8 @@ static int __rbd_notify_op_lock(struct rbd_device *rbd_dev, { struct ceph_osd_client *osdc = &rbd_dev->rbd_client->client->osdc; struct rbd_client_id cid = rbd_get_cid(rbd_dev); - int buf_size = 4 + 8 + 8 + CEPH_ENCODING_START_BLK_LEN; - char buf[buf_size]; + char buf[4 + 4 + 8 + 8 + CEPH_ENCODING_START_BLK_LEN]; + int buf_size = sizeof(buf) void *p = buf; dout("%s rbd_dev %p notify_op %d\n", __func__, rbd_dev, notify_op); @@ -3619,8 +3619,8 @@ static void __rbd_acknowledge_notify(struct rbd_device *rbd_dev, u64 notify_id, u64 cookie, s32 *result) { struct ceph_osd_client *osdc = &rbd_dev->rbd_client->client->osdc; - int buf_size = 4 + CEPH_ENCODING_START_BLK_LEN; - char buf[buf_size]; + char buf[4 + CEPH_ENCODING_START_BLK_LEN]; + int buf_size = sizeof(buf); int ret; if (result) {
As part of the effort to remove VLAs from the kernel[1], this moves the literal values into the stack array calculation instead of using a variable for the sizing. The resulting size can be found from sizeof(buf). [1] https://lkml.org/lkml/2018/3/7/621 Signed-off-by: Kyle Spiers <kyle@spiers.me> --- drivers/block/rbd.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)