diff --git a/control/compute_z.h b/control/compute_z.h
index c17553091863da09e097ff25d09f31dc4b63ddab..82d3e99ca5858f37f507a32e442ac2504b4c3ae5 100644
--- a/control/compute_z.h
+++ b/control/compute_z.h
@@ -166,7 +166,7 @@ chameleon_zdesc_alloc_diag( CHAM_desc_t *descA, int nb, int m, int n, int p, int
  * @return CHAMELEON_SUCCESS on success, the associated error on failure.
  */
 static inline int
-chameleon_zdesc_copy_and_restrict( CHAM_desc_t *descIn,
+chameleon_zdesc_copy_and_restrict( const CHAM_desc_t *descIn,
                                    CHAM_desc_t *descOut,
                                    int m, int n )
 {
diff --git a/control/descriptor.c b/control/descriptor.c
index 6c424bfcb8014a1037484abfba12585d7dc330e7..dd1be56c45f11f4968b4a447ea0fe9c938e7c343 100644
--- a/control/descriptor.c
+++ b/control/descriptor.c
@@ -759,7 +759,7 @@ int CHAMELEON_Desc_Create_OOC(CHAM_desc_t **descptr, cham_flttype_t dtyp, int mb
  * @retval The new matrix descriptor.
  *
  */
-CHAM_desc_t *CHAMELEON_Desc_Copy( CHAM_desc_t *descin, void *mat )
+CHAM_desc_t *CHAMELEON_Desc_Copy( const CHAM_desc_t *descin, void *mat )
 {
     CHAM_desc_t *descout = NULL;
     CHAMELEON_Desc_Create_User( &descout, mat,
@@ -794,7 +794,7 @@ CHAM_desc_t *CHAMELEON_Desc_Copy( CHAM_desc_t *descin, void *mat )
  * @retval The new matrix descriptor.
  *
  */
-CHAM_desc_t *CHAMELEON_Desc_CopyOnZero( CHAM_desc_t *descin, void *mat )
+CHAM_desc_t *CHAMELEON_Desc_CopyOnZero( const CHAM_desc_t *descin, void *mat )
 {
     CHAM_desc_t *descout = NULL;
     CHAMELEON_Desc_Create_User( &descout, mat,
diff --git a/include/chameleon.h b/include/chameleon.h
index 76849662c9a572668c84a6fa3d9526e4b348ec1a..3aca9347e8009471993833a2562f0c752f812475 100644
--- a/include/chameleon.h
+++ b/include/chameleon.h
@@ -121,8 +121,8 @@ int CHAMELEON_Desc_Create_OOC( CHAM_desc_t **desc, cham_flttype_t dtyp,
                                int mb, int nb, int bsiz, int lm, int ln,
                                int i, int j, int m, int n, int p, int q );
 
-CHAM_desc_t *CHAMELEON_Desc_Copy( CHAM_desc_t *descin, void *mat );
-CHAM_desc_t *CHAMELEON_Desc_CopyOnZero( CHAM_desc_t *descin, void *mat );
+CHAM_desc_t *CHAMELEON_Desc_Copy( const CHAM_desc_t *descin, void *mat );
+CHAM_desc_t *CHAMELEON_Desc_CopyOnZero( const CHAM_desc_t *descin, void *mat );
 CHAM_desc_t *CHAMELEON_Desc_SubMatrix( CHAM_desc_t *descA, int i, int j, int m, int n );
 
 int CHAMELEON_Desc_Destroy( CHAM_desc_t **desc );