I agree.- if (qp->is_user&& copy_from_user(p, (__user void *)qp-_is_user is always false in this function (flow starts from
- (uintptr_t)sge->addr, sge->length))
+ spin_unlock_irqrestore(&qp->sq.sq_lock, *flags);
+ err = copy_from_user(p, (__user void *)
+ (uintptr_t)sge->addr, sge->length);
+ spin_lock_irqsave(&qp->sq.sq_lock, *flags);
+ if (qp->is_user&& err)
return -EFAULT;
rxe_post_send_kernel) so this line is a dead code
In fact, this patch seems to add a serious bug when it uses
copy_from_user() from a non user pointer.
Do you agree?
Second, I think that there is no flow that leads to this function
when qp->is user is true so maybe the correct action is to remove this
line completely
if (qp->is_user&& copy_from_user(p, (__user void *)