mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 18:21:24 +02:00
iommufd: Fix data_len byte-count vs element-count mismatch
kzalloc_flex() computes the allocation size. With event_data typed as u64,
data_len is interpreted as a u64 element count. Yet, every caller and the
read path treat data_len as a byte count. The current code over-allocates
by sizeof(u64) and the __counted_by() annotation overstates the length by
the same factor.
Re-type event_data as u8. No functional change in user-visible behavior.
Fixes: e36ba5ab80 ("iommufd: Add IOMMUFD_OBJ_VEVENTQ and IOMMUFD_CMD_VEVENTQ_ALLOC")
Link: https://patch.msgid.link/r/f7665f839b9dce917d6bd394375a1cf56568d86b.1779408671.git.nicolinc@nvidia.com
Cc: stable@vger.kernel.org
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
parent
be93d186ae
commit
85345becfe
|
|
@ -602,7 +602,7 @@ struct iommufd_vevent {
|
|||
struct iommufd_vevent_header header;
|
||||
struct list_head node; /* for iommufd_eventq::deliver */
|
||||
ssize_t data_len;
|
||||
u64 event_data[] __counted_by(data_len);
|
||||
u8 event_data[] __counted_by(data_len);
|
||||
};
|
||||
|
||||
#define vevent_for_lost_events_header(vevent) \
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user