On Tuesday, October 30, 2012 08:50:41 AM Greg KH wrote:
On Mon, Oct 29, 2012 at 10:01:52PM -0700, Dmitry Torokhov wrote:
quoted
On Mon, Oct 29, 2012 at 07:26:05PM -0700, Greg KH wrote:
quoted
On Mon, Oct 29, 2012 at 06:04:27PM -0700, George Zhang wrote:
quoted
+static void event_signal_destroy(struct kref *kref)
+{
+ struct vmci_subscription *entry =
+ container_of(kref, struct vmci_subscription, kref);
+
+ complete(&entry->done);
+}
Didn't you just leak memory here? What frees the structure up?
event_unregister_subscription() waits for that completion and frees the
structure. We want event_unregister_subscription() to wait until all
fired callbacks completed before unregister is complete.
So all calls to this can just sit and spin waiting for others to clean
up? Odd, but ok.
Not all as there is logically only one owner of the subscription so
naturally it waits until all notification callbacks are done.
Frankly we have a change that gets rid of delayed ecvent callbacks
and so the refcounting is no longer needed at all.
Thanks,
Dmitry