diff --git a/wp-includes/plugin.php b/wp-includes/plugin.php
index 5a87e40..f7ea603 100644
--- a/wp-includes/plugin.php
+++ b/wp-includes/plugin.php
@@ -817,9 +817,12 @@ function register_uninstall_hook( $file, $callback ) {
         * uninstalling the plugin.
         */
        $uninstallable_plugins = (array) get_option('uninstall_plugins');
-       $uninstallable_plugins[plugin_basename($file)] = $callback;
+       $plugin_basename = plugin_basename($file);
+       if ( ! isset( $uninstallable_plugins[ $plugin_basename ] ) || $uninstallable_plugins[ $plugin_basename ] !== $callback ) {
+               $uninstallable_plugins[ $plugin_basename ] = $callback;

-       update_option('uninstall_plugins', $uninstallable_plugins);
+               update_option( 'uninstall_plugins', $uninstallable_plugins );
+        }
 }

 /**
