[openib-general] user_mad::ib_umad_read question

Hal Rosenstock halr at voltaire.com
Thu May 19 09:38:28 PDT 2005


Hi,

In ib_umad_read, there is currently (or soon to be something like) the
following:
	...
        packet = list_entry(file->recv_list.next, struct ib_umad_packet, list);
        list_del(&packet->list);

        spin_unlock_irq(&file->recv_lock);

        if (copy_to_user(buf, &packet->mad,
                         min(count, packet->length +
                             sizeof (struct ib_user_mad))))
                ret = -EFAULT;
        else
                ret = count;

        kfree(packet);
        return ret;

Should the packet be thrown away because copy_to_user() fails ?
Shouldn't it be placed back at the head of the list ? Unfortunately,
that would mean holding the recv lock longer (through the duration of
copy_to_user).

-- Hal







More information about the general mailing list