Re: [PATCH net 1/1] net sched actions: fix refcnt when GETing of action after bind
From: Jamal Hadi Salim <jhs@mojatatu.com>
Date: 2017-01-22 12:57:07
On 17-01-20 01:20 AM, Cong Wang wrote:
On Wed, Jan 18, 2017 at 3:33 AM, Jamal Hadi Salim [off-list ref] wrote:quoted
On 17-01-17 01:17 PM, Cong Wang wrote:quoted
quoted
I did. The issue there (after your original patch) was destroy() would decrement the refcount to zero and a GET was essentially translated to a DEL. Incrementing the refcount earlier protected against that assuming destroy was going to decrement it. However, when an action is bound the destroy() doesnt decrement the refcnt. So the refcnt keeps going up forever (and therefore deleting fails in the future). So we cant use destroy() as is.Hmm, tcf_action_destroy() should not touch the refcnt at all in this case, right? Since the refcnt here is not for readers in kernel code but for user-space. We mix the use of this refcnt, which leads to problems. Your patch is not correct either for DEL, tcf_action_destroy() is not needed to call again after tcf_del_notify() fails, right? Probably it is not needed at all:
Cong, Please proceed to separate del from get. The trickery is biting us. Also - run those tests i had in my patch. There is a difference between the bound vs not-bound use cases. cheers, jamal