kubernetes/pkg
Jordan Liggitt af36d192c3 RBAC helper: fix data race
The verbs parameter slice might be shared between different rule instances and
gets sorted (= written), so we have to make a copy or (even better) also
de-duplicate as in pkg/apis/rbac/helpers.go.

More specifically, plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy.go
shares the Read and ReadWrite slices, causing:

    WARNING: DATA RACE
    Read at 0x000008e5e5b0 by goroutine 124:
      slices.insertionSortOrdered[go.shape.string]()
          /home/prow/go/src/k8s.io/kubernetes/_output/local/go/cache/mod/golang.org/toolchain@v0.0.1-go1.25.6.linux-amd64/src/slices/zsortordered.go:14 +0x126
      slices.pdqsortOrdered[go.shape.string]()
          /home/prow/go/src/k8s.io/kubernetes/_output/local/go/cache/mod/golang.org/toolchain@v0.0.1-go1.25.6.linux-amd64/src/slices/zsortordered.go:75 +0x6c4
      slices.Sort[go.shape.[]string,go.shape.string]()
          /home/prow/go/src/k8s.io/kubernetes/_output/local/go/cache/mod/golang.org/toolchain@v0.0.1-go1.25.6.linux-amd64/src/slices/sort.go:18 +0x64
      sort.Strings()
          /home/prow/go/src/k8s.io/kubernetes/_output/local/go/cache/mod/golang.org/toolchain@v0.0.1-go1.25.6.linux-amd64/src/sort/sort.go:181 +0xe
      k8s.io/kubernetes/pkg/apis/rbac/v1.(*PolicyRuleBuilder).Rule()
          /home/prow/go/src/k8s.io/kubernetes/pkg/apis/rbac/v1/helpers.go:98 +0x2c9
      k8s.io/kubernetes/pkg/apis/rbac/v1.(*PolicyRuleBuilder).RuleOrDie()
          /home/prow/go/src/k8s.io/kubernetes/pkg/apis/rbac/v1/helpers.go:65 +0x2f44
      k8s.io/kubernetes/plugin/pkg/auth/authorizer/rbac/bootstrappolicy.ClusterRoles()
          /home/prow/go/src/k8s.io/kubernetes/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy.go:404 +0x2c13
    ...
    Previous write at 0x000008e5e5b0 by goroutine 123:
      slices.insertionSortOrdered[go.shape.string]()
          /home/prow/go/src/k8s.io/kubernetes/_output/local/go/cache/mod/golang.org/toolchain@v0.0.1-go1.25.6.linux-amd64/src/slices/zsortordered.go:15 +0x2f9
      slices.pdqsortOrdered[go.shape.string]()
          /home/prow/go/src/k8s.io/kubernetes/_output/local/go/cache/mod/golang.org/toolchain@v0.0.1-go1.25.6.linux-amd64/src/slices/zsortordered.go:75 +0x6c4
      slices.Sort[go.shape.[]string,go.shape.string]()
          /home/prow/go/src/k8s.io/kubernetes/_output/local/go/cache/mod/golang.org/toolchain@v0.0.1-go1.25.6.linux-amd64/src/slices/sort.go:18 +0x64
      sort.Strings()
          /home/prow/go/src/k8s.io/kubernetes/_output/local/go/cache/mod/golang.org/toolchain@v0.0.1-go1.25.6.linux-amd64/src/sort/sort.go:181 +0xe
      k8s.io/kubernetes/pkg/apis/rbac/v1.(*PolicyRuleBuilder).Rule()
          /home/prow/go/src/k8s.io/kubernetes/pkg/apis/rbac/v1/helpers.go:98 +0x2c9
      k8s.io/kubernetes/pkg/apis/rbac/v1.(*PolicyRuleBuilder).RuleOrDie()
          /home/prow/go/src/k8s.io/kubernetes/pkg/apis/rbac/v1/helpers.go:65 +0x2f44
      k8s.io/kubernetes/plugin/pkg/auth/authorizer/rbac/bootstrappolicy.ClusterRoles()
          /home/prow/go/src/k8s.io/kubernetes/plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy.go:404 +0x2c13

Seen in test/integration/apiserver/oidc.
2026-02-03 15:46:33 +01:00
..
api Merge pull request #136620 from yongruilin/master_vg-fix-fuzz 2026-01-30 03:08:04 +05:30
apis RBAC helper: fix data race 2026-02-03 15:46:33 +01:00
auth wire in ctx to rbac plugins 2024-09-17 20:04:02 +03:00
capabilities remove import doc comments 2024-12-02 16:59:34 +01:00
certauthorization Pod Certificates: Basic implementation 2025-07-21 21:49:57 +00:00
client test: code coverage increase for kubelet_client 2025-06-25 13:39:12 +08:00
cluster/ports remove import doc comments 2024-12-02 16:59:34 +01:00
controller Fix unit tests 2026-01-29 17:55:08 -05:00
controlplane Merge pull request #135597 from alvaroaleman/plumb-context 2026-01-13 02:15:00 +05:30
credentialprovider Migrate pkg/credentialprovider to structured logging 2025-08-11 16:41:55 -07:00
features Merge pull request #136482 from aaron-prindle/dv-feature-gate-ga 2026-01-30 03:07:48 +05:30
fieldpath remove import doc comments 2024-12-02 16:59:34 +01:00
generated Merge pull request #136424 from JoelSpeed/podgroup-union 2026-01-30 01:22:06 +05:30
kubeapiserver Drop StructuredAuthorizationConfiguration feature gate 2026-01-26 11:35:39 -06:00
kubectl React to removing autoscaling v2beta1 and v2beta2 2025-12-05 11:59:30 +01:00
kubelet Merge pull request #136661 from atombrella/feature/fix_test_TestContainerMapCloneUnshared 2026-01-31 17:00:24 +05:30
kubemark remove portworx from in-tree volume plugins 2026-01-19 11:35:30 +08:00
printers Use latest API for column definitions in printers 2026-01-08 11:54:28 +01:00
probe build: remove deprecated '// +build' tag 2025-12-18 12:16:21 +01:00
proxy Merge pull request #136292 from atombrella/feature/modernize_plusbuild 2026-01-26 19:05:59 +05:30
quota/v1 locked the feature-gate VolumeAttributesClass to default (true) and switch storage version from v1beta1 to v1 2025-12-18 15:59:33 +08:00
registry Merge pull request #136482 from aaron-prindle/dv-feature-gate-ga 2026-01-30 03:07:48 +05:30
routes build: remove deprecated '// +build' tag 2025-12-18 12:16:21 +01:00
scheduler Merge pull request #135719 from Argh4k/waiting-pod-integration-test 2026-01-30 23:36:24 +05:30
security build: remove deprecated '// +build' tag 2025-12-18 12:16:21 +01:00
securitycontext Merge pull request #131018 from saschagrunert/default-masked-paths 2025-07-15 10:56:23 -07:00
serviceaccount Service account controller: Wire through context 2025-12-04 19:30:55 -05:00
util build: remove deprecated '// +build' tag 2025-12-18 12:16:21 +01:00
volume Merge pull request #136202 from RomanBednar/fix-csi-plugin-backoff 2026-01-27 15:47:48 +05:30
windows/service build: remove deprecated '// +build' tag 2025-12-18 12:16:21 +01:00
.import-restrictions restrict the use of scheme internally to client-go 2025-05-16 08:48:39 +00:00
OWNERS lavalamp is taking a long break 2023-05-11 16:43:38 +00:00