Index: wp-admin/includes/class-wp-upgrader.php
===================================================================
--- wp-admin/includes/class-wp-upgrader.php	(revision 12531)
+++ wp-admin/includes/class-wp-upgrader.php	(working copy)
@@ -464,6 +464,8 @@
 
 		$this->maintenance_mode(true);
 
+		$results = array();
+
 		$all = count($plugins);
 		$i = 1;
 		foreach ( $plugins as $plugin ) {
Index: wp-admin/plugins.php
===================================================================
--- wp-admin/plugins.php	(revision 12531)
+++ wp-admin/plugins.php	(working copy)
@@ -224,6 +224,43 @@
 		case 'clear-recent-list':
 			update_option('recently_activated', array());
 			break;
+		case 'upgrade-selected':
+			if ( ! current_user_can('update_plugins') )
+				wp_die(__('You do not have sufficient permissions to update plugins for this blog.'));
+
+			check_admin_referer('bulk-manage-plugins');
+
+			if ( isset($_GET['plugins']) ) {
+				$plugins = explode(',', $_GET['plugins']);
+			} elseif ( isset($_POST['checked']) ) {
+				$plugins = (array) $_POST['checked'];
+
+				// Filter out non-upgrade-needing plugins, Easy to check non-upgrade-needing plugins..
+				$current = get_transient( 'update_plugins' );
+				foreach ( $plugins as $key => $plugin )
+					if ( !isset( $current->response[ $plugin ] ) )
+						unset($plugins[$key]);
+
+				unset($current);
+			} else {
+				$plugins = array();
+			}
+
+			$title = __('Upgrade Plugins');
+			$nonce = 'bulk-manage-plugins';
+			$url = 'plugins.php?action=upgrade-selected&amp;plugins=' . urlencode(join(',', $plugins));
+			$parent_file = 'plugins.php';
+
+			require_once('admin-header.php');
+
+			include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
+
+			$upgrader = new Plugin_Upgrader( new Plugin_Upgrader_Skin( compact('title', 'nonce', 'url') ) );
+			$upgrader->bulk_upgrade($plugins);
+
+			require_once('admin-footer.php');
+			exit;
+			break;
 	}
 }
 
@@ -490,6 +527,7 @@
 	<?php if ( current_user_can('delete_plugins') && ( 'active' != $context ) ) : ?>
 			<option value="delete-selected"><?php _e('Delete'); ?></option>
 	<?php endif; ?>
+			<option value="upgrade-selected"><?php _e('Upgrade') ?></option>
 		</select>
 		<input type="submit" name="doaction_active" value="<?php esc_attr_e('Apply'); ?>" class="button-secondary action" />
 	<?php if( 'recent' == $context ) : ?>
Index: wp-admin/update-core.php
===================================================================
--- wp-admin/update-core.php	(revision 12531)
+++ wp-admin/update-core.php	(working copy)
@@ -364,7 +364,7 @@
 	$url = 'update-core.php?action=do-plugin-upgrade&amp;plugins=' . urlencode(join(',', $plugins));
 	$title = __('Upgrade Plugins');
 	$nonce = 'upgrade-core';
-	$upgrader = new Plugin_Upgrader( new Plugin_Upgrader_Skin( compact('title', 'nonce', 'url', 'plugin') ) );
+	$upgrader = new Plugin_Upgrader( new Plugin_Upgrader_Skin( compact('title', 'nonce', 'url') ) );
 	$upgrader->bulk_upgrade($plugins);
 }
 
