The following check in user_mad is done when sending a MAD.

        /*
         * If userspace is generating a request that will generate a
         * response, we need to make sure the high-order part of the
         * transaction ID matches the agent being used to send the
         * MAD.
         */
        method = ((struct ib_mad_hdr *) packet->msg->mad)->method;

        if (!(method & IB_MGMT_METHOD_RESP)       &&
            method != IB_MGMT_METHOD_TRAP_REPRESS &&
            method != IB_MGMT_METHOD_SEND) {
                tid = &((struct ib_mad_hdr *) packet->msg->mad)->tid;
                *tid = cpu_to_be64(((u64) agent->hi_tid) << 32 |
                                   (be64_to_cpup(tid) & 0xffffffff));
        }

Does anyone know the reason for the last check (method != SEND)?  Isn't it still
a requirement that the TID be unique?

I'm trying to add some validation checks against MADs sent from userspace to
protect against a client sending non-data RMPP MADs, duplicate MADs, etc., and
the above check looks incorrect to me.

- Sean

_______________________________________________
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