Thread (41 messages) 41 messages, 4 authors, 2017-08-29

[PATCH v2 11/20] rpmsg: glink: Fix idr_lock from mutex to spinlock

From: Chris Lew <hidden>
Date: 2017-08-28 21:51:55
Also in: linux-arm-msm, linux-remoteproc, lkml

Hi Sricharan,

Minor bug in this patch.

On 8/24/2017 12:21 AM, Sricharan R wrote:
[..]
quoted hunk ↗ jump to hunk
@@ -829,11 +839,14 @@ static int qcom_glink_rx_open(struct qcom_glink *glink, unsigned int rcid,
  	struct device_node *node;
  	int lcid;
  	int ret;
+	unsigned long flags;
  
+	spin_lock_irqsave(&glink->idr_lock, flags);
  	idr_for_each_entry(&glink->lcids, channel, lcid) {
  		if (!strcmp(channel->name, name))
  			break;
  	}
+	spin_unlock_irqrestore(&glink->idr_lock, flags);
  
  	if (!channel) {
  		channel = qcom_glink_alloc_channel(glink, name);
@@ -844,15 +857,15 @@ static int qcom_glink_rx_open(struct qcom_glink *glink, unsigned int rcid,
  		create_device = true;
  	}
  
-	mutex_lock(&glink->idr_lock);
+	spin_lock_irqsave(&glink->idr_lock, flags);
  	ret = idr_alloc(&glink->rcids, channel, rcid, rcid + 1, GFP_KERNEL);
I think GFP_KERNEL should be changed to GFP_ATOMIC if the mutex is 
changed to spinlock.

Thanks,
Chris
-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help