diff --git a/services/pull/update.go b/services/pull/update.go
index 2ccbcf00a3..0829b1c5d6 100644
--- a/services/pull/update.go
+++ b/services/pull/update.go
@@ -59,6 +59,17 @@ func IsUserAllowedToUpdate(pull *models.PullRequest, user *models.User) (bool, e
 		HeadBranch: pull.BaseBranch,
 		BaseBranch: pull.HeadBranch,
 	}
+
+	err = pr.LoadProtectedBranch()
+	if err != nil {
+		return false, err
+	}
+
+	// Update function need push permission
+	if pr.ProtectedBranch != nil && !pr.ProtectedBranch.CanUserPush(user.ID) {
+		return false, nil
+	}
+
 	return IsUserAllowedToMerge(pr, headRepoPerm, user)
 }