[ It's weird that I didn't send this email earlier - dan ] Hello Arkadi Sharshevsky, The patch d9f9b9a4d05f: "devlink: Add support for resource abstraction" from Jan 15, 2018, leads to the following static checker warning: net/core/devlink.c:2604 devlink_resource_fill() error: double free of 'skb' net/core/devlink.c 2582 } 2583 i++; 2584 } 2585 nla_nest_end(skb, resources_attr); 2586 genlmsg_end(skb, hdr); 2587 if (incomplete) 2588 goto start_again; 2589 send_done: 2590 nlh = nlmsg_put(skb, info->snd_portid, info->snd_seq, 2591 NLMSG_DONE, 0, flags | NLM_F_MULTI); 2592 if (!nlh) { 2593 err = devlink_dpipe_send_and_alloc_skb(&skb, info); ^^^^ Smatch says that some error paths free *pskb. This seems like a legit thing. Of course, kfree_skb() only really frees it after we drop the last reference and I don't know how the refcounting works here. 2594 if (err) 2595 goto err_skb_send_alloc; ^^^^^^^^^^^^^^^^^^^^^^^^ 2596 goto send_done; 2597 } 2598 return genlmsg_reply(skb, info); 2599 2600 nla_put_failure: 2601 err = -EMSGSIZE; 2602 err_resource_put: 2603 err_skb_send_alloc: 2604 nlmsg_free(skb); ^^^ 2605 return err; 2606 } regards, dan carpenter