[openib-general] user_mad: large rmpp length problem
Michael S. Tsirkin
mst at mellanox.co.il
Sun Nov 20 08:33:10 PST 2005
Hello!
ib_umad_write currently accepts a count parameter from user
and attempts to allocate mad of size count - sizeof (struct ib_user_mad)
in kernel memory.
This, obviously, fails with -ENOMEM, which means that we cant
send large transactions with RMPP.
The proper fix appears to be to transfer the data by chunks,
waking the user process and copying a fixed number of bytes each time.
A simpler fix would be allocate all of the memory in one go,
but by chunks, and make it possible to pass a list of buffers
to ib_post_send_mad. This would, however, open us up for a DOS
scenario when the user want to send a huge RMPP transaction -
not sure how serious that is.
Both ways would require API changed, mainly to ib_create_send_mad
and ib_post_send_mad functions.
Comments? What would be the best solution to this problem?
--
MST
More information about the general
mailing list