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
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to