diff --git a/rust/sanitize.go b/rust/sanitize.go
index e232b53..0f7cf6e 100644
--- a/rust/sanitize.go
+++ b/rust/sanitize.go
@@ -32,7 +32,6 @@
 	Sanitize struct {
 		Address   *bool `android:"arch_variant"`
 		Hwaddress *bool `android:"arch_variant"`
-		Scs       *bool `android:"arch_variant"`
 
 		// Memory-tagging, only available on arm64
 		// if diag.memtag unset or false, enables async memory tagging
@@ -76,9 +75,6 @@
 var asanFlags = []string{
 	"-Z sanitizer=address",
 }
-var scsFlags = []string{
-	"-Z sanitizer=shadow-call-stack",
-}
 
 // See cc/sanitize.go's hwasanGlobalOptions for global hwasan options.
 var hwasanFlags = []string{
@@ -212,15 +208,9 @@
 		s.Memtag_heap = nil
 	}
 
-	// SCS is only supported on AArch64 in Rust.
-	// TODO: Add riscv when riscv supported.
-	if (ctx.Arch().ArchType != android.Arm64) || !ctx.toolchain().Bionic() {
-		s.Scs = nil
-	}
-
 	// TODO:(b/178369775)
 	// For now sanitizing is only supported on devices
-	if ctx.Os() == android.Android && (Bool(s.Hwaddress) || Bool(s.Address) || Bool(s.Memtag_heap) || Bool(s.Fuzzer) || Bool(s.Scs)) {
+	if ctx.Os() == android.Android && (Bool(s.Hwaddress) || Bool(s.Address) || Bool(s.Memtag_heap) || Bool(s.Fuzzer)) {
 		sanitize.Properties.SanitizerEnabled = true
 	}
 }
@@ -239,10 +229,7 @@
 		flags.RustFlags = append(flags.RustFlags, hwasanFlags...)
 	} else if Bool(sanitize.Properties.Sanitize.Address) {
 		flags.RustFlags = append(flags.RustFlags, asanFlags...)
-	} else if Bool(sanitize.Properties.Sanitize.Scs) {
-		flags.RustFlags = append(flags.RustFlags, scsFlags...)
 	}
-
 	return flags, deps
 }
 
@@ -324,9 +311,6 @@
 	case cc.Memtag_heap:
 		sanitize.Properties.Sanitize.Memtag_heap = boolPtr(b)
 		sanitizerSet = true
-	case cc.Scs:
-		sanitize.Properties.Sanitize.Scs = boolPtr(b)
-		sanitizerSet = true
 	default:
 		panic(fmt.Errorf("setting unsupported sanitizerType %d", t))
 	}
@@ -388,8 +372,6 @@
 		return sanitize.Properties.Sanitize.Hwaddress
 	case cc.Memtag_heap:
 		return sanitize.Properties.Sanitize.Memtag_heap
-	case cc.Scs:
-		return sanitize.Properties.Sanitize.Scs
 	default:
 		return nil
 	}
@@ -402,10 +384,6 @@
 		if sanitize.isSanitizerEnabled(cc.Hwasan) {
 			entries.SubName += ".hwasan"
 		}
-		if sanitize.isSanitizerEnabled(cc.Scs) {
-			entries.SubName += ".scs"
-		}
-
 	}
 }
 
@@ -426,13 +404,6 @@
 		return true
 	case cc.Memtag_heap:
 		return true
-	case cc.Scs:
-		// SCS is only supported on AArch64 in Rust.
-		// TODO: Add riscv when riscv supported.
-		if mod.Target().Arch.ArchType == android.Arm64 {
-			return true
-		}
-		return false
 	default:
 		return false
 	}
