diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/Control.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/Control.java
index 16f827a2df5..05c75a0e48e 100644
--- a/src/jdk.jfr/share/classes/jdk/jfr/internal/Control.java
+++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/Control.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2024, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -108,15 +108,18 @@ final class Control {
             // VM events requires no access control context
             try {
                 delegate.setValue(value);
+                lastValue = delegate.getValue();
             } catch (Throwable t) {
                 Logger.log(LogTag.JFR_SETTING, LogLevel.WARN, "Exception occurred when setting value \"" + value + "\" for " + getClass());
+                lastValue = null;
             }
         } else {
-            AccessController.doPrivileged(new PrivilegedAction<Void>() {
+            lastValue = AccessController.doPrivileged(new PrivilegedAction<String>() {
                 @Override
-                public Void run() {
+                public String run() {
                     try {
                         delegate.setValue(value);
+                        return delegate.getValue();
                     } catch (Throwable t) {
                         // Prevent malicious user to propagate exception callback in the wrong context
                         Logger.log(LogTag.JFR_SETTING, LogLevel.WARN, "Exception occurred when setting value \"" + value + "\" for " + getClass());
@@ -125,7 +128,6 @@ final class Control {
                 }
             }, context);
         }
-        lastValue = value;
     }