Index: src/wp-includes/category-template.php
===================================================================
--- src/wp-includes/category-template.php	(revision 30339)
+++ src/wp-includes/category-template.php	(working copy)
@@ -511,7 +511,15 @@
 		}
 	} else {
 		if ( ! empty( $show_option_all ) ) {
-			$posts_page = ( 'page' == get_option( 'show_on_front' ) && get_option( 'page_for_posts' ) ) ? get_permalink( get_option( 'page_for_posts' ) ) : home_url( '/' );
+
+			// We're explicitly specifying a post type
+			if ( $post_type = get_query_var( 'post_type' ) ) {
+				$posts_page = get_post_type_archive_link( $post_type );
+			} elseif ( 'page' == get_option( 'show_on_front' ) && get_option( 'page_for_posts' ) ) {
+				$posts_page = get_permalink( get_option( 'page_for_posts' ) );
+			} else {
+				$posts_page = home_url( '/' );
+			}
 			$posts_page = esc_url( $posts_page );
 			if ( 'list' == $r['style'] ) {
 				$output .= "<li class='cat-item-all'><a href='$posts_page'>$show_option_all</a></li>";
