Index: src/wp-includes/meta.php
===================================================================
--- src/wp-includes/meta.php	(revision 37996)
+++ src/wp-includes/meta.php	(working copy)
@@ -1031,6 +1031,7 @@

 	// There used to be individual args for sanitize and auth callbacks
 	$has_old_sanitize_cb = false;
+	$has_old_auth_cb = false;

 	if ( is_callable( $args ) ) {
 		$args = array(
@@ -1044,6 +1045,8 @@

 	if ( is_callable( $deprecated ) ) {
 		$args['auth_callback'] = $deprecated;
+
+		$has_old_auth_cb = true;
 	}

 	$args = wp_parse_args( $args, $defaults );
@@ -1061,7 +1064,7 @@
 	$args = apply_filters( 'register_meta_args', $args, $defaults, $object_type, $meta_key );

 	// Object subtype is required if using the args style of registration
-	if ( ! $has_old_sanitize_cb && empty( $args['object_subtype'] ) ) {
+	if ( ! $has_old_sanitize_cb && ! $has_old_auth_cb && empty( $args['object_subtype'] ) ) {
 		return new WP_Error( 'register_meta_failed', __( 'Meta must be registered against an object subtype.' ) );
 	}

@@ -1084,7 +1087,13 @@
 	if ( $has_old_sanitize_cb && is_callable( $args['sanitize_callback'] ) ) {
 		add_filter( "sanitize_{$object_type}_meta_{$meta_key}", $args['sanitize_callback'], 10, 4 );
- 		add_filter( "auth_{$object_type}_meta_{$meta_key}", $args['auth_callback'], 10, 6 );
-	} else {
+	}
+
+	if ( $has_old_auth_cb && is_callable( $args['auth_callback'] ) ) {
+		add_filter( "auth_{$object_type}_meta_{$meta_key}", $args['auth_callback'], 10, 6 );
+	}
+
+	if ( ! $has_old_auth_cb && ! $has_old_sanitize_cb) {
 		if ( is_callable( $args['sanitize_callback'] ) ) {
 			add_filter( "sanitize_{$object_type}_{$object_subtype}_meta_{$meta_key}", $args['sanitize_callback'], 10, 4 );
 		}
