Loading drivers/rpmsg/qcom_glink_native.c +16 −1 Original line number Diff line number Diff line Loading @@ -818,9 +818,11 @@ static void qcom_glink_handle_rx_done(struct qcom_glink *glink, static void qcom_glink_handle_intent_req(struct qcom_glink *glink, u32 cid, size_t size) { struct glink_core_rx_intent *intent; struct glink_core_rx_intent *intent = NULL; struct glink_core_rx_intent *tmp; struct glink_channel *channel; unsigned long flags; int iid; spin_lock_irqsave(&glink->idr_lock, flags); channel = idr_find(&glink->rcids, cid); Loading @@ -831,6 +833,19 @@ static void qcom_glink_handle_intent_req(struct qcom_glink *glink, return; } spin_lock_irqsave(&channel->intent_lock, flags); idr_for_each_entry(&channel->liids, tmp, iid) { if (tmp->size >= size && tmp->reuse) { intent = tmp; break; } } spin_unlock_irqrestore(&channel->intent_lock, flags); if (intent) { qcom_glink_send_intent_req_ack(glink, channel, !!intent); return; } intent = qcom_glink_alloc_intent(glink, channel, size, false); if (intent) qcom_glink_advertise_intent(glink, channel, intent); Loading Loading
drivers/rpmsg/qcom_glink_native.c +16 −1 Original line number Diff line number Diff line Loading @@ -818,9 +818,11 @@ static void qcom_glink_handle_rx_done(struct qcom_glink *glink, static void qcom_glink_handle_intent_req(struct qcom_glink *glink, u32 cid, size_t size) { struct glink_core_rx_intent *intent; struct glink_core_rx_intent *intent = NULL; struct glink_core_rx_intent *tmp; struct glink_channel *channel; unsigned long flags; int iid; spin_lock_irqsave(&glink->idr_lock, flags); channel = idr_find(&glink->rcids, cid); Loading @@ -831,6 +833,19 @@ static void qcom_glink_handle_intent_req(struct qcom_glink *glink, return; } spin_lock_irqsave(&channel->intent_lock, flags); idr_for_each_entry(&channel->liids, tmp, iid) { if (tmp->size >= size && tmp->reuse) { intent = tmp; break; } } spin_unlock_irqrestore(&channel->intent_lock, flags); if (intent) { qcom_glink_send_intent_req_ack(glink, channel, !!intent); return; } intent = qcom_glink_alloc_intent(glink, channel, size, false); if (intent) qcom_glink_advertise_intent(glink, channel, intent); Loading