From: Jon Maloy <jon.ma...@ericsson.com> Date: Wed, 11 Apr 2018 22:52:09 +0200
> When a topology subscription is created, we may encounter (or KASAN > may provoke) a failure to create a corresponding service instance in > the binding table. Instead of letting the tipc_nametbl_subscribe() > report the failure back to the caller, the function just makes a warning > printout and returns, without incrementing the subscription reference > counter as expected by the caller. > > This makes the caller believe that the subscription was successful, so > it will at a later moment try to unsubscribe the item. This involves > a sub_put() call. Since the reference counter never was incremented > in the first place, we get a premature delete of the subscription item, > followed by a "use-after-free" warning. > > We fix this by adding a return value to tipc_nametbl_subscribe() and > make the caller aware of the failure to subscribe. > > This bug seems to always have been around, but this fix only applies > back to the commit shown below. Given the low risk of this happening > we believe this to be sufficient. > > Fixes: commit 218527fe27ad ("tipc: replace name table service range > array with rb tree") > Reported-by: syzbot+aa245f26d42b8305d...@syzkaller.appspotmail.com > > Signed-off-by: Jon Maloy <jon.ma...@ericsson.com> Applied and queued up for -stable.