If the gpioc open call fails devfs_clear_cdevpriv will be called
automatically for us, calling the destructor. If we call this in an
error path this can lead to a use after free when repeatidly opening
gpioc and listening for interrupts.
devfs_set_cdevpriv can fail, return the value of this call so when it
does fail our destructor is called for us.