When I was removing the ND-specific IRP handling from the CEP manager I 
accidentally deleted the code that would free a pending get_event IRP.  This 
would lead to the IRP being orphaned, and the cancel routine would fail to 
cancel the IRP since the associated CEP was freed.

This patch restores the missing lines.

Signed-off-by: Fab Tillier <[email protected]>

Index: core/al/kernel/al_cm_cep.c
===================================================================
--- core/al/kernel/al_cm_cep.c  (revision 2088)
+++ core/al/kernel/al_cm_cep.c  (working copy)
@@ -4136,6 +4136,9 @@ al_destroy_cep(
        context = p_cep->context;
        pfn_destroy_cb = p_cep->pfn_destroy_cb;

+       /* Cancel any queued IRP */
+       __cep_complete_irp( p_cep, STATUS_CANCELLED, IO_NO_INCREMENT );
+
        __unbind_cep( p_cep );
        ref_cnt = __cleanup_cep( p_cep );
     if( reusable )

Attachment: cep_irp_leak.patch
Description: cep_irp_leak.patch

_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to