As part of rollback to stable operation, we create an update and appended it to the update list to abort the on-disk newer updates than the stable timestamp. There exists a function __upd_alloc_tombstone and it can be refactored as attached change to reduce the code duplication.
*** ../include/txn.i    Wed Feb 12 00:35:45 2020
--- -   Wed Feb 12 01:19:14 2020
*************** 
*** 756,776 ****
  } 
    
  /*
!  * __upd_alloc_tombstone --
!  *     Allocate a tombstone update at a given transaction id and timestamp.
   */    
  static inline int
! __upd_alloc_tombstone(
!   WT_SESSION_IMPL *session, WT_UPDATE **updp, uint64_t txnid, wt_timestamp_t start_ts)
  { 
!     size_t size;
!     WT_RET(__wt_update_alloc(session, NULL, updp, &size, WT_UPDATE_TOMBSTONE));
!     (*updp)->txnid = txnid;
!     /* FIXME: Reevaluate this as part of PM-1524. */
!     (*updp)->durable_ts = (*updp)->start_ts = start_ts;
!     F_SET(*updp, WT_UPDATE_RESTORED_FROM_DISK);
!     return (0);
  }   
      
  /*  
--- 756,779 ----
  } 
    
  /*
!  * __wt_upd_alloc_tombstone --
!  *     Allocate a tombstone update with default values.
   */
  static inline int
! __wt_upd_alloc_tombstone(WT_SESSION_IMPL *session, WT_UPDATE **updp)
  {
!     size_t notused;
!     /*
!      * The underlying allocation code clears memory, which is the equivalent of setting:
!      *
!      *    WT_UPDATE.txnid = WT_TXN_NONE;
!      *    WT_UPDATE.durable_ts = WT_TS_NONE;
!      *    WT_UPDATE.start_ts = WT_TS_NONE;
!      *    WT_UPDATE.prepare_state = WT_PREPARE_INIT;
!      *    WT_UPDATE.flags = 0;
!      */
!     return (__wt_update_alloc(session, NULL, updp, ¬used, WT_UPDATE_TOMBSTONE));
  }
  /*
***************
*** 825,834 ****
          return (0);
      /* If there is no ondisk value, there can't be anything in the history store either. */
!     if (cbt->ref->page->dsk == NULL || cbt->slot == UINT32_MAX) {
!         WT_RET(__upd_alloc_tombstone(session, updp, WT_TXN_NONE, WT_TS_NONE));
!         return (0);
!     }
      buf.data = NULL;
      buf.size = 0;
--- 828,835 ----
          return (0);
      /* If there is no ondisk value, there can't be anything in the history store either. */
!     if (cbt->ref->page->dsk == NULL || cbt->slot == UINT32_MAX)
!         return (__wt_upd_alloc_tombstone(session, updp));
      buf.data = NULL;
      buf.size = 0;
***************
*** 855,861 ****
       */
      if (stop.txnid != WT_TXN_MAX && stop.timestamp != WT_TS_MAX && !WT_IS_HS(S2BT(session)) &&
        __wt_txn_visible(session, stop.txnid, stop.timestamp)) {
!         WT_RET(__upd_alloc_tombstone(session, updp, stop.txnid, stop.timestamp));
          return (0);
      }
--- 856,867 ----
       */
      if (stop.txnid != WT_TXN_MAX && stop.timestamp != WT_TS_MAX && !WT_IS_HS(S2BT(session)) &&
        __wt_txn_visible(session, stop.txnid, stop.timestamp)) {
!         WT_RET(__wt_upd_alloc_tombstone(session, updp));
!
!       (*updp)->txnid = stop.txnid;
!       /* FIXME: Reevaluate this as part of PM-1524. */
!       (*updp)->durable_ts = (*updp)->start_ts = stop.timestamp;
!       F_SET(*updp, WT_UPDATE_RESTORED_FROM_DISK);
          return (0);
      }