Message ID | 20180607145720.22590-4-willy@infradead.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Matthew, I love your patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v4.17 next-20180607] [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/Matthew-Wilcox/More-conversions-to-struct_size/20180608-112654 config: x86_64-randconfig-x017-201822 (attached as .config) compiler: gcc-7 (Debian 7.3.0-16) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All errors (new ones prefixed by >>): drivers/media/v4l2-core/v4l2-event.c: In function 'v4l2_event_subscribe': >> drivers/media/v4l2-core/v4l2-event.c:218:17: error: implicit declaration of function 'struct_size'; did you mean 'resource_size'? [-Werror=implicit-function-declaration] sev = kvzalloc(struct_size(sev, events, elems), GFP_KERNEL); ^~~~~~~~~~~ resource_size drivers/media/v4l2-core/v4l2-event.c:218:34: error: 'events' undeclared (first use in this function); did you mean 'elems'? sev = kvzalloc(struct_size(sev, events, elems), GFP_KERNEL); ^~~~~~ elems drivers/media/v4l2-core/v4l2-event.c:218:34: note: each undeclared identifier is reported only once for each function it appears in cc1: some warnings being treated as errors vim +218 drivers/media/v4l2-core/v4l2-event.c 203 204 int v4l2_event_subscribe(struct v4l2_fh *fh, 205 const struct v4l2_event_subscription *sub, unsigned elems, 206 const struct v4l2_subscribed_event_ops *ops) 207 { 208 struct v4l2_subscribed_event *sev, *found_ev; 209 unsigned long flags; 210 unsigned i; 211 212 if (sub->type == V4L2_EVENT_ALL) 213 return -EINVAL; 214 215 if (elems < 1) 216 elems = 1; 217 > 218 sev = kvzalloc(struct_size(sev, events, elems), GFP_KERNEL); 219 if (!sev) 220 return -ENOMEM; 221 for (i = 0; i < elems; i++) 222 sev->events[i].sev = sev; 223 sev->type = sub->type; 224 sev->id = sub->id; 225 sev->flags = sub->flags; 226 sev->fh = fh; 227 sev->ops = ops; 228 229 spin_lock_irqsave(&fh->vdev->fh_lock, flags); 230 found_ev = v4l2_event_subscribed(fh, sub->type, sub->id); 231 if (!found_ev) 232 list_add(&sev->list, &fh->subscribed); 233 spin_unlock_irqrestore(&fh->vdev->fh_lock, flags); 234 235 if (found_ev) { 236 kvfree(sev); 237 return 0; /* Already listening */ 238 } 239 240 if (sev->ops && sev->ops->add) { 241 int ret = sev->ops->add(sev, elems); 242 if (ret) { 243 sev->ops = NULL; 244 v4l2_event_unsubscribe(fh, sub); 245 return ret; 246 } 247 } 248 249 /* Mark as ready for use */ 250 sev->elems = elems; 251 252 return 0; 253 } 254 EXPORT_SYMBOL_GPL(v4l2_event_subscribe); 255 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
diff --git a/drivers/media/v4l2-core/v4l2-event.c b/drivers/media/v4l2-core/v4l2-event.c index 968c2eb08b5a..127fe6eb91d9 100644 --- a/drivers/media/v4l2-core/v4l2-event.c +++ b/drivers/media/v4l2-core/v4l2-event.c @@ -215,8 +215,7 @@ int v4l2_event_subscribe(struct v4l2_fh *fh, if (elems < 1) elems = 1; - sev = kvzalloc(sizeof(*sev) + sizeof(struct v4l2_kevent) * elems, - GFP_KERNEL); + sev = kvzalloc(struct_size(sev, events, elems), GFP_KERNEL); if (!sev) return -ENOMEM; for (i = 0; i < elems; i++)