nsim_pp_hold_write() has two problems:
1) It may return with rtnl held, as found by syzbot.
2) Its return value does not propagate an error if any.
Fixes: 1580cbcbfe77 ("net: netdevsim: add some fake page pool use")
Reported-by: syzbot <syzkaller@googlegroups.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20241216083703.1859921-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
 
                page_pool_put_full_page(ns->page->pp, ns->page, false);
                ns->page = NULL;
        }
-       rtnl_unlock();
 
 exit:
-       return count;
+       rtnl_unlock();
+       return ret;
 }
 
 static const struct file_operations nsim_pp_hold_fops = {