diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h
index 59d9d3d..d9e62f0 100644
--- a/include/mbedtls/ecp.h
+++ b/include/mbedtls/ecp.h
@@ -263,9 +263,10 @@
  *
  *                  If more operations are needed to complete a computation,
  *                  MBEDTLS_ERR_ECP_IN_PROGRESS will be returned by the
- *                  function performing the computation. That function will
- *                  then need to be called again with the same arguments until
- *                  it returns 0 or an other error code.
+ *                  function performing the computation. It is then the
+ *                  caller's responsibility to either call again with the same
+ *                  arguments until it returns 0 or an error code; or to free
+ *                  the restart context if the operation is to be aborted.
  *
  *                  This only affects functions that accept a pointer to a
  *                  \c mbedtls_ecp_restart_ctx as an argument, and only works
@@ -615,14 +616,11 @@
  * \param P         Point to multiply
  * \param f_rng     RNG function (see notes)
  * \param p_rng     RNG parameter
- * \param rs_ctx    Restart context - must be non-NULL to enable early-return
+ * \param rs_ctx    Restart context
  *
  * \return          See \c mbedtls_ecp_mul(), or
  *                  MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of
- *                  operations was reached (see \c mbedtls_ecp_set_max_ops()),
- *                  indicating the function should be called again with the
- *                  exact same arguments.
- *
+ *                  operations was reached: see \c mbedtls_ecp_set_max_ops().
  */
 int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R,
              const mbedtls_mpi *m, const mbedtls_ecp_point *P,
diff --git a/library/ecp.c b/library/ecp.c
index 21ce22f..fcc3ae0 100644
--- a/library/ecp.c
+++ b/library/ecp.c
@@ -105,8 +105,6 @@
  */
 struct mbedtls_ecp_restart_mul {
     unsigned ops_done;      /* number of operations done this time          */
-    mbedtls_mpi m;          /* saved argument: scalar                       */
-    mbedtls_ecp_point P;    /* saved argument: point                        */
     mbedtls_ecp_point R;    /* current intermediate result                  */
     size_t i;               /* current index in various loops, 0 outside    */
     mbedtls_ecp_point *T;   /* table for precomputed points                 */
@@ -139,8 +137,6 @@
     if( ctx == NULL )
         return;
 
-    mbedtls_mpi_free( &ctx->m );
-    mbedtls_ecp_point_free( &ctx->P );
     mbedtls_ecp_point_free( &ctx->R );
 
     if( ctx->T != NULL ) {
@@ -1763,17 +1759,6 @@
 #endif
 
 #if defined(MBEDTLS_ECP_EARLY_RETURN)
-    /* check for restart with new arguments */
-    if( rs_ctx != NULL && rs_ctx->rsm != NULL && rs_ctx->rsm != NULL &&
-        ( mbedtls_mpi_cmp_mpi( m, &rs_ctx->rsm->m ) != 0 ||
-          mbedtls_mpi_cmp_mpi( &P->X, &rs_ctx->rsm->P.X ) != 0 ||
-          mbedtls_mpi_cmp_mpi( &P->Y, &rs_ctx->rsm->P.Y ) != 0 ) )
-    {
-        ecp_restart_mul_free( rs_ctx->rsm );
-        mbedtls_free( rs_ctx->rsm );
-        rs_ctx->rsm = NULL;
-    }
-
     /* set up restart context if needed */
     if( ecp_max_ops != 0 && rs_ctx != NULL && rs_ctx->rsm == NULL )
     {
@@ -1782,9 +1767,6 @@
             return( MBEDTLS_ERR_ECP_ALLOC_FAILED );
 
         ecp_restart_mul_init( rs_ctx->rsm );
-
-        MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &rs_ctx->rsm->m, m ) );
-        MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &rs_ctx->rsm->P, P ) );
     }
 
     /* reset ops count for this call */
diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function
index 195146c..23905ce 100644
--- a/tests/suites/test_suite_ecp.function
+++ b/tests/suites/test_suite_ecp.function
@@ -116,9 +116,6 @@
     TEST_ASSERT( cnt_restarts >= min_restarts );
     TEST_ASSERT( cnt_restarts <= max_restarts );
 
-    /* Prepare context for new operation */
-    mbedtls_ecp_restart_free( &ctx );
-
     /* Non-base point case */
     cnt_restarts = 0;
     do {
