Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
[sfrench/cifs-2.6.git] / drivers / dpll / dpll_core.c
index 6b2a6236f5e3ebd66745a68a6c120441a77dbba6..64eaca80d736c5652958ddb5e21bc64ff3a6bc65 100644 (file)
@@ -131,9 +131,9 @@ static int dpll_xa_ref_pin_del(struct xarray *xa_pins, struct dpll_pin *pin,
                reg = dpll_pin_registration_find(ref, ops, priv);
                if (WARN_ON(!reg))
                        return -EINVAL;
+               list_del(&reg->list);
+               kfree(reg);
                if (refcount_dec_and_test(&ref->refcount)) {
-                       list_del(&reg->list);
-                       kfree(reg);
                        xa_erase(xa_pins, i);
                        WARN_ON(!list_empty(&ref->registration_list));
                        kfree(ref);
@@ -211,9 +211,9 @@ dpll_xa_ref_dpll_del(struct xarray *xa_dplls, struct dpll_device *dpll,
                reg = dpll_pin_registration_find(ref, ops, priv);
                if (WARN_ON(!reg))
                        return;
+               list_del(&reg->list);
+               kfree(reg);
                if (refcount_dec_and_test(&ref->refcount)) {
-                       list_del(&reg->list);
-                       kfree(reg);
                        xa_erase(xa_dplls, i);
                        WARN_ON(!list_empty(&ref->registration_list));
                        kfree(ref);