the link counting doesn't look right here..
Why LINK(udesc) here?

you take ownership  of udesc in constructor.. which will cause a -ve leak if you haven't called serializeReq..
so the LINK(udesc) saves you.. kind of..
if you called serializeReq > 1 once it would leak udesc.

It should link on constructor and do nothing here afaics.