Fix memory leak in RiscV assembler.

  PR 30861
  * config/tc-riscv.c (riscv_insert_uleb128_fixes): Release duplicated memory.
diff --git a/gas/ChangeLog b/gas/ChangeLog
index c6e730f..fef3c24 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2023-10-02  Nick Clifton  <nickc@redhat.com>
+
+	PR 30861
+	* config/tc-riscv.c (riscv_insert_uleb128_fixes): Release
+	duplicated memory.
+
 2023-09-18  Jacob Navia  <jacob@jacob.remcomp.fr>
 
 	* config/tc-riscv.c (riscv_ip_hardcode): Fully initialise the
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 0b8ecf9..4b7ff6d 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -4999,6 +4999,7 @@
       exp_dup->X_add_symbol = exp->X_op_symbol;
       fix_new_exp (fragP, fragP->fr_fix, 0,
 		   exp_dup, 0, BFD_RELOC_RISCV_SUB_ULEB128);
+      free ((void *) exp_dup);
     }
 }