Thanks Ben, A few small comments: > + nreg = kzalloc(sizeof(*nreg), GFP_KERNEL); > + memset(nreg, 0, sizeof(*nreg)); that memset isn't needed after kzalloc :) > + spin_lock_bh(&rdev->beacon_registrations_lock); > + list_for_each_entry(reg, &rdev->beacon_registrations, list) { > + msg = nlmsg_new(len + 100, gfp); since you're in the locked section, you can't use "gfp" any more and have to use GFP_ATOMIC, so we could even consider removing the gfp argument to the function. > + hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_FRAME); > + if (!hdr) { > + spin_unlock_bh(&rdev->beacon_registrations_lock); > + nlmsg_free(msg); > + return; it seems this should be some goto since nla_put_failure is also a label? > + spin_lock_bh(&rdev->beacon_registrations_lock); > + list_for_each_entry_safe(reg, tmp, &rdev->beacon_registrations, > + list) { > + if (reg->nlportid == notify->portid) { > + list_del(®->list); > + kfree(reg); You could break here, but it doesn't matter much. johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html