Index: /soft/giet_vm/giet_kernel/ctx_handler.c
===================================================================
--- /soft/giet_vm/giet_kernel/ctx_handler.c	(revision 699)
+++ /soft/giet_vm/giet_kernel/ctx_handler.c	(revision 700)
@@ -60,4 +60,11 @@
         _sys_nic_release( 0 );
         psched->context[ltid][CTX_NIC_TX_ID] = -1;
+    }
+
+    // release private FBF_CMA channel if required
+    if ( psched->context[ltid][CTX_CMA_FB_ID] < NB_CMA_CHANNELS )
+    {
+        _sys_fbf_cma_release();
+        psched->context[ltid][CTX_CMA_FB_ID] = -1;
     }
 
Index: /soft/giet_vm/giet_kernel/sys_handler.c
===================================================================
--- /soft/giet_vm/giet_kernel/sys_handler.c	(revision 699)
+++ /soft/giet_vm/giet_kernel/sys_handler.c	(revision 700)
@@ -1686,4 +1686,27 @@
 } // end sys_fbf_cma_alloc()
 
+////////////////////////
+// NOTE: not a syscall
+int _sys_fbf_cma_release()
+{
+    unsigned int channel = _get_context_slot( CTX_CMA_FB_ID );
+
+    if ( channel >= NB_CMA_CHANNELS )
+    {
+        _printf("\n[GIET_ERROR] in _sys_fbf_cma_release() : CMA channel already released\n");
+        return -1;
+    }
+
+    // stop fb
+    _sys_fbf_cma_stop();
+
+    // reset CTX_CMA_FB_ID for task
+    _set_context_slot( CTX_CMA_FB_ID, -1 );
+
+    // release CMA channel
+    _cma_channel[channel] = 0;
+
+    return 0;
+}
 
 ///////////////////////////////////////////////////
Index: /soft/giet_vm/giet_kernel/sys_handler.h
===================================================================
--- /soft/giet_vm/giet_kernel/sys_handler.h	(revision 699)
+++ /soft/giet_vm/giet_kernel/sys_handler.h	(revision 700)
@@ -180,4 +180,6 @@
 int _sys_fbf_cma_alloc();
 
+int _sys_fbf_cma_release();
+
 int _sys_fbf_cma_init_buf(void*        buf0_vbase, 
                           void*        buf1_vbase, 
