From: Yann Droneaud > Hi, > > Le vendredi 28 mars 2014 11:24 +0300, Dan Carpenter a crit : > > The c4iw_alloc_ucontext_resp struct has a 4 byte hole after the last > > member and we should clear it before passing it to the user. > > > > Fixes: 05eb23893c2c ('cxgb4/iw_cxgb4: Doorbell Drop Avoidance Bug Fixes') > > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > > > > It's not the proper fix for this issue: an explicit padding has to be > added (and initialized), see "Re: [PATCH net-next 2/2] cxgb4/iw_cxgb4: > Doorbell Drop Avoidance Bug Fixes" > http://marc.info/?i=1395848977.3297.15.camel@localhost.localdomain > > In its current form, the c4iw_alloc_ucontext_resp structure does not > require padding on i386, so a 32bits userspace program using this > structure against a x86_64 kernel will make the kernel do a buffer > overflow in userspace, likely on stack, as answer of a GET_CONTEXT > request: ... > struct c4iw_alloc_ucontext_resp { > struct ibv_get_context_resp ibv_resp; > __u64 status_page_key; > __u32 status_page_size; > }; Or add __attribute__((aligned(4))) to the 64bit fields. And maybe a compile time assert on the length of the structure. Since it is part of an ABI it must not change David ��.n��������+%������w��{.n����z�ޗ�����n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�