diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index f8c731a7bf7a1c4af00561ef3f2afef031626ed1..cfafbf6786e025b3862358dfdc2d976a67ac2786 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -220,14 +220,14 @@ module Ci
     def cancel_url
       if active?
         Gitlab::Application.routes.url_helpers.
-          cancel_namespace_project_build_path(gl_project.namespace, gl_project, self, return_to: request.original_url)
+          cancel_namespace_project_build_path(gl_project.namespace, gl_project, self)
       end
     end
 
     def retry_url
       if commands.present?
         Gitlab::Application.routes.url_helpers.
-          cancel_namespace_project_build_path(gl_project.namespace, gl_project, self, return_to: request.original_url)
+          retry_namespace_project_build_path(gl_project.namespace, gl_project, self)
       end
     end
 
diff --git a/app/views/projects/commit/ci.html.haml b/app/views/projects/commit/ci.html.haml
index 4a1ef378a30e5cc7d0314d9c16ecbed35129efec..ca71a91af156d0ececae7c1e06001b7b79953ef7 100644
--- a/app/views/projects/commit/ci.html.haml
+++ b/app/views/projects/commit/ci.html.haml
@@ -3,11 +3,6 @@
 = render "commit_box"
 = render "ci_menu"
 
-- if @ci_project && current_user && can?(current_user, :manage_builds, @project)
-  .pull-right
-    - if @ci_commit.builds.running_or_pending.any?
-      = link_to "Cancel", cancel_builds_namespace_project_commit_path(@project.namespace, @project, @commit.sha), class: 'btn btn-sm btn-danger'
-
 
 - if @ci_commit.yaml_errors.present?
   .bs-callout.bs-callout-danger
@@ -22,11 +17,18 @@
 
 .gray-content-block.second-block
   Latest builds
-  - if @ci_commit.duration > 0
-    %small.pull-right
+
+  .pull-right
+    - if @ci_commit.duration > 0
       %i.fa.fa-time
       #{time_interval_in_words @ci_commit.duration}
 
+     
+
+    - if @ci_project && current_user && can?(current_user, :manage_builds, @project)
+      - if @ci_commit.builds.running_or_pending.any?
+        = link_to "Cancel all", cancel_builds_namespace_project_commit_path(@project.namespace, @project, @commit.sha), class: 'btn btn-xs btn-danger'
+
 %table.table.builds
   %thead
     %tr
@@ -41,7 +43,8 @@
         %th Coverage
       %th
   - @ci_commit.refs.each do |ref|
-    = render partial: "projects/commit_statuses/commit_status", collection: @ci_commit.statuses.for_ref(ref).latest.ordered, coverage: @ci_project.try(:coverage_enabled?), controls: true
+    = render partial: "projects/commit_statuses/commit_status", collection: @ci_commit.statuses.for_ref(ref).latest.ordered,
+             locals: { coverage: @ci_project.try(:coverage_enabled?), allow_retry: true }
 
 - if @ci_commit.retried.any?
   .gray-content-block.second-block
@@ -60,4 +63,5 @@
         - if @ci_project && @ci_project.coverage_enabled?
           %th Coverage
         %th
-    = render partial: "projects/commit_statuses/commit_status", collection: @ci_commit.retried, coverage: @ci_project.try(:coverage_enabled?)
+    = render partial: "projects/commit_statuses/commit_status", collection: @ci_commit.retried,
+             locals: { coverage: @ci_project.try(:coverage_enabled?) }
diff --git a/app/views/projects/commit_statuses/_commit_status.html.haml b/app/views/projects/commit_statuses/_commit_status.html.haml
index e3a17faf0bd947a8d2fbefaf8bb0fa6a8d10fec0..7314f8e79d3ad3771f7778d0ceb078430ef06ce8 100644
--- a/app/views/projects/commit_statuses/_commit_status.html.haml
+++ b/app/views/projects/commit_statuses/_commit_status.html.haml
@@ -41,11 +41,11 @@
         #{commit_status.coverage}%
 
   %td
-    - if defined?(controls) && controls && current_user && can?(current_user, :manage_builds, gl_project)
-      .pull-right
+    .pull-right
+      - if current_user && can?(current_user, :manage_builds, commit_status.gl_project)
         - if commit_status.cancel_url
           = link_to commit_status.cancel_url, title: 'Cancel' do
             %i.fa.fa-remove.cred
-        - elsif commit_status.retry_url
+        - elsif defined?(allow_retry) && allow_retry && commit_status.retry_url
           = link_to commit_status.retry_url, method: :post, title: 'Retry' do
             %i.fa.fa-repeat
diff --git a/spec/features/commits_spec.rb b/spec/features/commits_spec.rb
index cbb6360069b8ffec309dbb9580662934651640bb..1adc2cdf70a235bfaab9d1b8b3433c033ef077d3 100644
--- a/spec/features/commits_spec.rb
+++ b/spec/features/commits_spec.rb
@@ -29,8 +29,16 @@ describe "Commits" do
       it { expect(page).to have_content @commit.git_author_name }
     end
 
-    describe "Cancel commit" do
+    describe "Cancel all builds" do
       it "cancels commit" do
+        visit ci_status_path(@commit)
+        click_on "Cancel all"
+        expect(page).to have_content "canceled"
+      end
+    end
+
+    describe "Cancel build" do
+      it "cancels build" do
         visit ci_status_path(@commit)
         click_on "Cancel"
         expect(page).to have_content "canceled"