OK. Unfortunately, this was picked and got merged in upstream. So I will post a follow up patch set to 1) revert the commit to the original __get_free_page() implementation, and 2) fix the accounting and leakage on top. Will it be fine?
So what I suggest is to fix the pinning leakage first and do the possible optimization on top (which is still questionable to me).