Jan Beulich
2013-Jun-11 08:47 UTC
[PATCH] io/ring.h: drop unused and broken *_RING_ATTACH() macros
Initializing r*_prod_pvt and r*_cons from independent shared ring fields is broken, as other macros in this header rely on them being coupled. Furthermore using the backend variant would also imply a security vulnerability. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/include/public/io/ring.h +++ b/xen/include/public/io/ring.h @@ -174,21 +174,6 @@ typedef struct __name##_back_ring __name (_r)->sring = (_s); \ } while (0) -/* Initialize to existing shared indexes -- for recovery */ -#define FRONT_RING_ATTACH(_r, _s, __size) do { \ - (_r)->sring = (_s); \ - (_r)->req_prod_pvt = (_s)->req_prod; \ - (_r)->rsp_cons = (_s)->rsp_prod; \ - (_r)->nr_ents = __RING_SIZE(_s, __size); \ -} while (0) - -#define BACK_RING_ATTACH(_r, _s, __size) do { \ - (_r)->sring = (_s); \ - (_r)->rsp_prod_pvt = (_s)->rsp_prod; \ - (_r)->req_cons = (_s)->req_prod; \ - (_r)->nr_ents = __RING_SIZE(_s, __size); \ -} while (0) - /* How big is this ring? */ #define RING_SIZE(_r) \ ((_r)->nr_ents) _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
Keir Fraser
2013-Jun-11 10:09 UTC
Re: [PATCH] io/ring.h: drop unused and broken *_RING_ATTACH() macros
On 11/06/2013 09:47, "Jan Beulich" <JBeulich@suse.com> wrote:> Initializing r*_prod_pvt and r*_cons from independent shared ring > fields is broken, as other macros in this header rely on them being > coupled. Furthermore using the backend variant would also imply a > security vulnerability. > > Signed-off-by: Jan Beulich <jbeulich@suse.com>Acked-by: Keir Fraser <keir@xen.org>> --- a/xen/include/public/io/ring.h > +++ b/xen/include/public/io/ring.h > @@ -174,21 +174,6 @@ typedef struct __name##_back_ring __name > (_r)->sring = (_s); \ > } while (0) > > -/* Initialize to existing shared indexes -- for recovery */ > -#define FRONT_RING_ATTACH(_r, _s, __size) do { \ > - (_r)->sring = (_s); \ > - (_r)->req_prod_pvt = (_s)->req_prod; \ > - (_r)->rsp_cons = (_s)->rsp_prod; \ > - (_r)->nr_ents = __RING_SIZE(_s, __size); \ > -} while (0) > - > -#define BACK_RING_ATTACH(_r, _s, __size) do { \ > - (_r)->sring = (_s); \ > - (_r)->rsp_prod_pvt = (_s)->rsp_prod; \ > - (_r)->req_cons = (_s)->req_prod; \ > - (_r)->nr_ents = __RING_SIZE(_s, __size); \ > -} while (0) > - > /* How big is this ring? */ > #define RING_SIZE(_r) \ > ((_r)->nr_ents) > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel