lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 11 Jul 2018 12:44:59 +0300 From: Yishai Hadas <yishaih@....mellanox.co.il> To: Jason Gunthorpe <jgg@...pe.ca> Cc: Leon Romanovsky <leon@...nel.org>, Doug Ledford <dledford@...hat.com>, Leon Romanovsky <leonro@...lanox.com>, RDMA mailing list <linux-rdma@...r.kernel.org>, Yishai Hadas <yishaih@...lanox.com>, Saeed Mahameed <saeedm@...lanox.com>, linux-netdev <netdev@...r.kernel.org>, Yishai Hadas <yishaih@...lanox.com>, Majd Dibbiny <majd@...lanox.com> Subject: Re: [PATCH rdma-next 6/9] IB/mlx5: Introduce vendor create and destroy flow methods On 7/10/2018 8:44 PM, Jason Gunthorpe wrote: > On Sun, Jul 08, 2018 at 01:24:42PM +0300, Leon Romanovsky wrote: > >> +static int UVERBS_HANDLER(MLX5_IB_METHOD_CREATE_FLOW)(struct ib_device *ib_dev, >> + struct ib_uverbs_file *file, >> + struct uverbs_attr_bundle *attrs) >> +{ >> + struct mlx5_ib_dev *dev = to_mdev(ib_dev); > > Same comment as before, the dev needs to come from uboj->context->device > OK >> -/* Used by drivers to declare a complete parsing tree for a single method that >> - * differs only in having additional driver specific attributes. >> +/* Used by drivers to declare a complete parsing tree for new methods >> */ >> -#define ADD_UVERBS_ATTRIBUTES_SIMPLE(_name, _object_id, _method_id, ...) \ >> - static const struct uverbs_attr_def *const UVERBS_METHOD_ATTRS( \ >> - _method_id)[] = { __VA_ARGS__ }; \ >> - static const struct uverbs_method_def UVERBS_METHOD(_method_id) = { \ >> - .id = _method_id, \ >> - .num_attrs = ARRAY_SIZE(UVERBS_METHOD_ATTRS(_method_id)), \ >> - .attrs = &UVERBS_METHOD_ATTRS(_method_id), \ >> - }; \ >> +#define ADD_UVERBS_METHODS(_name, _object_id, ...) \ >> static const struct uverbs_method_def *const UVERBS_OBJECT_METHODS( \ >> - _object_id)[] = { &UVERBS_METHOD(_method_id) }; \ >> + _object_id)[] = { __VA_ARGS__ }; \ >> static const struct uverbs_object_def _name##_struct = { \ >> .id = _object_id, \ >> - .num_methods = 1, \ >> + .num_methods = ARRAY_SIZE(UVERBS_OBJECT_METHODS(_object_id)), \ >> .methods = &UVERBS_OBJECT_METHODS(_object_id) \ >> }; \ >> static const struct uverbs_object_def *const _name##_ptrs[] = { \ >> @@ -123,4 +115,17 @@ >> .objects = &_name##_ptrs, \ >> } >> >> +/* Used by drivers to declare a complete parsing tree for a single method that >> + * differs only in having additional driver specific attributes. >> + */ >> +#define ADD_UVERBS_ATTRIBUTES_SIMPLE(_name, _object_id, _method_id, ...) \ >> + static const struct uverbs_attr_def *const UVERBS_METHOD_ATTRS( \ >> + _method_id)[] = { __VA_ARGS__ }; \ >> + static const struct uverbs_method_def UVERBS_METHOD(_method_id) = { \ >> + .id = _method_id, \ >> + .num_attrs = ARRAY_SIZE(UVERBS_METHOD_ATTRS(_method_id)), \ >> + .attrs = &UVERBS_METHOD_ATTRS(_method_id), \ >> + }; \ >> + ADD_UVERBS_METHODS(_name, _object_id, _method_id) > > Wow. How does that even compile? Oh I see, the only two users are > passing in a 0 constant which the compiler will understand as NULL > without a warning. > Yes > I guess this is an instant crash at runtime? > The merger code apparently skipped this method upon merging the trees and EOPNOTSUPP was returned from the parser layer. I have double checked it internally with our verification, the DM test was really failed but no crash was introduced. > Should be: > > ADD_UVERBS_METHODS(_name, _object_id, &UVERBS_METHOD(_method_id) > Correct, will be part of V1. Thanks, Yishai
Powered by blists - more mailing lists