16850 Commits

Author SHA1 Message Date
Samuel Karp
57489ef654 Merge pull request #13649 from containerd/dependabot/go_modules/go.etcd.io/bbolt-1.5.0
build(deps): bump go.etcd.io/bbolt from 1.4.3 to 1.5.0
2026-06-23 22:03:42 +00:00
Maksym Pavlenko
33fb482a85 Merge pull request #13656 from erofs/cri-image-volume
cri: don't leak the new mount if mutateImageMount() fails
2026-06-23 17:43:39 +00:00
dependabot[bot]
7f3f8fffdd build(deps): bump go.etcd.io/bbolt from 1.4.3 to 1.5.0
Bumps [go.etcd.io/bbolt](https://github.com/etcd-io/bbolt) from 1.4.3 to 1.5.0.
- [Release notes](https://github.com/etcd-io/bbolt/releases)
- [Commits](https://github.com/etcd-io/bbolt/compare/v1.4.3...v1.5.0)

---
updated-dependencies:
- dependency-name: go.etcd.io/bbolt
  dependency-version: 1.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-23 10:23:28 -07:00
Maksym Pavlenko
24226cb4c8 Merge pull request #13650 from containerd/dependabot/github_actions/softprops/action-gh-release-3.0.1
build(deps): bump softprops/action-gh-release from 3.0.0 to 3.0.1
2026-06-23 16:06:48 +00:00
Gao Xiang
a88ce40fd1 cri: don't leak the new mount if mutateImageMount() fails
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
2026-06-23 17:09:27 +08:00
Maksym Pavlenko
8413528830 Merge pull request #13651 from containerd/dependabot/go_modules/github.com/pelletier/go-toml/v2-2.4.1
build(deps): bump github.com/pelletier/go-toml/v2 from 2.3.1 to 2.4.1
2026-06-23 02:44:38 +00:00
Maksym Pavlenko
07c47c8346 Merge pull request #13618 from s3onghyun/docs-nri-dupword
docs: fix duplicated word in NRI guide
2026-06-22 23:23:35 +00:00
dependabot[bot]
f407302bab build(deps): bump github.com/pelletier/go-toml/v2 from 2.3.1 to 2.4.1
Bumps [github.com/pelletier/go-toml/v2](https://github.com/pelletier/go-toml) from 2.3.1 to 2.4.1.
- [Release notes](https://github.com/pelletier/go-toml/releases)
- [Commits](https://github.com/pelletier/go-toml/compare/v2.3.1...v2.4.1)

---
updated-dependencies:
- dependency-name: github.com/pelletier/go-toml/v2
  dependency-version: 2.4.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-22 23:23:12 +00:00
dependabot[bot]
d568ae9cb5 build(deps): bump softprops/action-gh-release from 3.0.0 to 3.0.1
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](b430933298...718ea10b13)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 3.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-22 23:23:04 +00:00
Maksym Pavlenko
49480db376 Merge pull request #13634 from dmcgowan/gc-forward-references
core/metadata: add forward References to the GC collection context
2026-06-22 23:20:07 +00:00
Fu Wei
7000458e29 Merge pull request #13518 from fuweid/add-trace-for-image-pull
integration: add http trace for debug
2026-06-22 16:16:10 +00:00
Fu Wei
3fcad510c2 Merge pull request #13588 from austinvazquez/fix-flaky-images-create-update-delete-test
test: fix flaky image timestamp check on coarse clocks
2026-06-22 14:07:11 +00:00
Derek McGowan
4be39f13f4 core/metadata: add forward References to the GC collection context
Extend the garbage-collection framework so a collectible resource can emit
forward references during graph traversal, in addition to the existing
back-reference mechanism.

A CollectionContext may now implement the optional collectionWithReferences
interface:

	References(ctx context.Context, node gc.Node, fn func(gc.Node))

When the GC visits a node whose resource type was registered by an external
collector, gcContext.references consults the per-type References
implementation after the built-in core resource types are handled.

This is the forward-reference analogue of collectionWithBackRefs.  Whereas
ActiveWithBackRefs must enumerate every edge up front and the gcContext
holds all of them in its backRefs map for the entire collection, References
is invoked on demand for a single node.  A collector whose resources fan
out to many other nodes can therefore emit those edges without retaining
them in memory for the gc context.

This commit is intentionally a no-op: no plugin registers a collector that
uses collectionWithReferences yet.  It is isolated here so that concurrent
development efforts that depend on this interface can be proposed and
reviewed upstream independently.

Signed-off-by: Derek McGowan <derek@mcg.dev>
2026-06-19 12:49:30 -07:00
Derek McGowan
e96fd14b81 Merge pull request #13585 from vvoland/content-proxy-convert-grpc-errors
core/content/proxy: Convert reader errors to native errdefs
2026-06-19 00:01:53 +00:00
Samuel Karp
5558f3aa0e Merge pull request #13626 from samuelkarp/june-18-combined-main
Patches
2026-06-18 16:02:14 -07:00
Derek McGowan
bfc75a4bc4 Merge pull request #13624 from chris-crone/mkfs-erofs-4k
erofs: align default mkfs block size across platforms
2026-06-18 21:13:54 +00:00
Chris Crone
773d3517dd erofs: align default mkfs block size across platforms
Force a 4K block size on all platforms rather than only on darwin.
An explicit caller-supplied -b is still respected.

Signed-off-by: Chris Crone <christopher.crone@docker.com>
2026-06-18 14:25:26 -04:00
Wei Fu
3d80ce2881 integration: add http trace for debug
This is used to debug the flaky test case - TestCRIImagePullTimeout

Signed-off-by: Wei Fu <fuweid89@gmail.com>
2026-06-18 12:46:59 -04:00
s3onghyun
59ccb0029b docs: fix duplicated word in NRI guide
Signed-off-by: s3onghyun <s3onghyun.hong@gmail.com>
2026-06-18 17:44:26 +09:00
Derek McGowan
b6aca07dd5 Merge pull request #13536 from eginez/dev/eginez/1104-fix-shim-windows-awaitpipeready-bails-on
fix(shim/windows): retry on winio.ErrTimeout in awaitPipeReady
2026-06-16 16:39:46 +00:00
Akihiro Suda
7052df139a Merge pull request #13600 from thaJeztah/bump_crypto2
vendor: golang.org/x/crypto v0.53.0
2026-06-16 11:20:59 +00:00
Chris Henzie
a0086cfcee Merge commit from fork 2026-06-15 21:26:29 -07:00
Chris Henzie
432a7af299 Merge commit from fork 2026-06-15 21:25:18 -07:00
Chris Henzie
3977106b53 Merge commit from fork 2026-06-15 21:25:18 -07:00
Chris Henzie
5a91c99584 Merge commit from fork 2026-06-15 21:25:17 -07:00
Chris Henzie
a834385de9 Merge commit from fork 2026-06-15 21:25:17 -07:00
Brian Goff
8196411f24 cri: make checkpoint restore robust to unexpected archive content
The CRI checkpoint restore path unpacked checkpoint archive/OCI image content
directly into the container's persistent state directory and read files such as
container.log back from it with a symlink-following copy. Checkpoint content is
externally provided, so make restore more defensive about what it unpacks and
how it reads those files back.

Behavior changes:

- Only unpack regular files and directories from the checkpoint archive.

- Unpack checkpoint content into a dedicated <state>/ctrd-restore
  subdirectory created fresh rather than into the state dir itself, so
  checkpoint content cannot collide with containerd's own files (e.g.
  the "status" blob). Restore and cleanup operate on that subdir;
  cleanup is now a single RemoveAll of it.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
2026-06-15 15:11:36 -07:00
Maksym Pavlenko
bfb30d457e Merge pull request #13590 from AkihiroSuda/runc-1.4.3
update runc binary to v1.4.3
2026-06-15 20:18:30 +00:00
Akihiro Suda
a54728641e Merge pull request #13586 from vvoland/streaming-grpc-errors
core/proxy: Convert stream proxy errors to native errdefs
2026-06-15 18:47:19 +00:00
Sebastiaan van Stijn
9838a323ed vendor: golang.org/x/crypto v0.53.0
golang.org/x/crypto v0.52.0 contains various security updates; those
do NOT impact containerd, but may show up as vulnerability in scanners;

    === Symbol Results ===

    No vulnerabilities found.

    === Package Results ===

    No other vulnerabilities found.

    === Module Results ===

    Vulnerability #1: GO-2026-5033
        Invoking pathological inputs can lead to client panic in
        golang.org/x/crypto/ssh/agent
      More info: https://pkg.go.dev/vuln/GO-2026-5033
      Module: golang.org/x/crypto
        Found in: golang.org/x/crypto@v0.51.0
        Fixed in: golang.org/x/crypto@v0.52.0

    Vulnerability #2: GO-2026-5023
        Invoking VerifiedPublicKeyCallback permissions skip enforcement in
        golang.org/x/crypto/ssh
      More info: https://pkg.go.dev/vuln/GO-2026-5023
      Module: golang.org/x/crypto
        Found in: golang.org/x/crypto@v0.51.0
        Fixed in: golang.org/x/crypto@v0.52.0

    Vulnerability #3: GO-2026-5021
        Invoking auth bypass via unenforced @revoked status in
        golang.org/x/crypto/ssh/knownhosts
      More info: https://pkg.go.dev/vuln/GO-2026-5021
      Module: golang.org/x/crypto
        Found in: golang.org/x/crypto@v0.51.0
        Fixed in: golang.org/x/crypto@v0.52.0

    Vulnerability #4: GO-2026-5020
        Invoking infinite loop on large channel writes in golang.org/x/crypto/ssh
      More info: https://pkg.go.dev/vuln/GO-2026-5020
      Module: golang.org/x/crypto
        Found in: golang.org/x/crypto@v0.51.0
        Fixed in: golang.org/x/crypto@v0.52.0

    Vulnerability #5: GO-2026-5019
        Invoking bypass of FIDO/U2F security keys physical interaction in
        golang.org/x/crypto/ssh
      More info: https://pkg.go.dev/vuln/GO-2026-5019
      Module: golang.org/x/crypto
        Found in: golang.org/x/crypto@v0.51.0
        Fixed in: golang.org/x/crypto@v0.52.0

    Vulnerability #6: GO-2026-5018
        Invoking pathological RSA/DSA parameters may cause DoS in
        golang.org/x/crypto/ssh
      More info: https://pkg.go.dev/vuln/GO-2026-5018
      Module: golang.org/x/crypto
        Found in: golang.org/x/crypto@v0.51.0
        Fixed in: golang.org/x/crypto@v0.52.0

    Vulnerability #7: GO-2026-5017
        Invoking client can cause server deadlock on unexpected responses in
        golang.org/x/crypto/ssh
      More info: https://pkg.go.dev/vuln/GO-2026-5017
      Module: golang.org/x/crypto
        Found in: golang.org/x/crypto@v0.51.0
        Fixed in: golang.org/x/crypto@v0.52.0

    Vulnerability #8: GO-2026-5016
        Invoking memory leak when rejecting channels can lead to DoS in
        golang.org/x/crypto/ssh
      More info: https://pkg.go.dev/vuln/GO-2026-5016
      Module: golang.org/x/crypto
        Found in: golang.org/x/crypto@v0.51.0
        Fixed in: golang.org/x/crypto@v0.52.0

    Vulnerability #9: GO-2026-5015
        Invoking server panic during CheckHostKey/Authenticate in
        golang.org/x/crypto/ssh
      More info: https://pkg.go.dev/vuln/GO-2026-5015
      Module: golang.org/x/crypto
        Found in: golang.org/x/crypto@v0.51.0
        Fixed in: golang.org/x/crypto@v0.52.0

    Vulnerability #10: GO-2026-5014
        Invoking bypass of certificate restrictions in golang.org/x/crypto/ssh
      More info: https://pkg.go.dev/vuln/GO-2026-5014
      Module: golang.org/x/crypto
        Found in: golang.org/x/crypto@v0.51.0
        Fixed in: golang.org/x/crypto@v0.52.0

    Vulnerability #11: GO-2026-5013
        Invoking byte arithmetic causes underflow and panic in
        golang.org/x/crypto/ssh
      More info: https://pkg.go.dev/vuln/GO-2026-5013
      Module: golang.org/x/crypto
        Found in: golang.org/x/crypto@v0.51.0
        Fixed in: golang.org/x/crypto@v0.52.0

    Vulnerability #12: GO-2026-5006
        Invoking agent constraints dropped when forwarding keys in
        golang.org/x/crypto/ssh/agent
      More info: https://pkg.go.dev/vuln/GO-2026-5006
      Module: golang.org/x/crypto
        Found in: golang.org/x/crypto@v0.51.0
        Fixed in: golang.org/x/crypto@v0.52.0

    Vulnerability #13: GO-2026-5005
        Invoking key constraints not enforced in golang.org/x/crypto/ssh/agent
      More info: https://pkg.go.dev/vuln/GO-2026-5005
      Module: golang.org/x/crypto
        Found in: golang.org/x/crypto@v0.51.0
        Fixed in: golang.org/x/crypto@v0.52.0

    Your code is affected by 0 vulnerabilities.
    This scan also found 0 vulnerabilities in packages you import and 13
    vulnerabilities in modules you require, but your code doesn't appear to call
    these vulnerabilities.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2026-06-15 20:47:07 +02:00
Akihiro Suda
48d0fcd94d Merge pull request #13556 from containerd/dependabot/go_modules/golang-x-b1834abdb7
build(deps): bump the golang-x group with 3 updates
2026-06-13 18:45:34 +00:00
Akihiro Suda
06c38dcad5 Merge pull request #13323 from dmcgowan/resolver-transient-errors
resolver: retry on transient network errors
2026-06-13 18:15:13 +00:00
Akihiro Suda
ebef5893cc update runc binary to v1.4.3
release notes: https://github.com/opencontainers/runc/releases/tag/v1.4.3
full diff: https://github.com/opencontainers/runc/compare/v1.4.2...v1.4.3

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2026-06-14 02:57:29 +09:00
Derek McGowan
20af2e324a resolver: retry on transient network errors
Allow the last host to retry on transient network errors to incrase the
likelihood of the operation succeeding and help reduce flaky tests.

Signed-off-by: Derek McGowan <derek@mcg.dev>
2026-06-12 16:36:08 -07:00
Austin Vazquez
e5e2190886 test: fix flaky image timestamp check on coarse clocks
TestImagesCreateUpdateDelete asserts that an image's updatedat is
strictly after its createdat. Both timestamps are stamped via
time.Now().UTC(), which strips the monotonic reading, so the comparison
falls back to the wall clock. On platforms with coarse timer resolution
(e.g. Windows, which advances system time at the ~15.6ms tick), the
Create and Update calls can land in the same tick and produce identical
timestamps, making the strict After() check fail intermittently.

Wait for the wall clock to advance past the creation timestamp before
updating so the assertion stays meaningful without depending on clock
resolution. On fine-resolution clocks the loop runs zero iterations.

Signed-off-by: Austin Vazquez <austin.vazquez@docker.com>
2026-06-12 14:36:13 -05:00
Paweł Gronowski
d3c143e8b4 core/proxy: Convert stream proxy errors to native errdefs
Some proxy stream setup and receive paths still returned raw RPC
status errors while neighboring proxy methods normalized them with
errgrpc.ToNative. This made errdefs checks depend on which proxy API
surfaced the same remote failure.

Normalize event subscription setup and receive errors, and streaming
stream creation errors, while preserving io.EOF for completed receive
streams.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-06-12 14:07:40 +02:00
Paweł Gronowski
d58c2c1aa4 core/content/proxy: Convert reader errors to native errdefs
Most content proxy operations normalize remote RPC errors before
returning them, including stream receive errors from Walk and write
errors from the remote writer. remoteReaderAt.ReadAt was an outlier and
returned raw status errors from Read and Recv.

Callers that use content.ReadBlob through the proxy can then fail
errdefs checks, such as treating concurrent content deletion as
NotFound.

Convert non-EOF read stream errors with errgrpc.ToNative so ReaderAt
matches the rest of the content proxy while preserving io.EOF.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-06-12 13:10:18 +02:00
Akihiro Suda
f546206f8d Merge pull request #13575 from akhilerm/go-1.26.4
update go to 1.26.4
2026-06-12 04:39:23 +00:00
Akhil Mohan
3c37ceee46 update go to 1.26.4
go1.26.4 includes security fixes to the crypto/x509, mime, and
net/textproto packages, as well as bug fixes to the compiler, the
runtime, the go fix command, and the crypto/fips140 package

Signed-off-by: Akhil Mohan <akhilerm@gmail.com>
2026-06-11 20:37:57 +05:30
Akihiro Suda
01f6f189a5 Merge pull request #13516 from estesp/setup-go-node20-fix
Update to current setup-go version
2026-06-11 13:42:26 +00:00
Akihiro Suda
f58cda1274 Merge pull request #13555 from containerd/dependabot/github_actions/github/codeql-action-4.36.2
build(deps): bump github/codeql-action from 4.36.0 to 4.36.2
2026-06-11 23:22:47 +09:00
Esteban Ginez
be3fcf33e8 fix(shim/windows): retry on winio.ErrTimeout in awaitPipeReady
awaitPipeReady retried only when DialPipe returned os.IsNotExist or
context.DeadlineExceeded, but winio.DialPipe converts the per-attempt
deadline into winio.ErrTimeout before returning. A pipe in state 1
(ListenPipe called, Accept not yet called) causes DialPipe to block for
the full per-attempt timeout and return winio.ErrTimeout, which the old
check treated as a fatal error instead of retrying.

Also guard windows.ERROR_PIPE_BUSY explicitly to match the error checks
in containerd/nerdbox#218.

Adds a regression test that forces the state-1 to state-2 transition
race by delaying Accept past the 1-second per-attempt timeout.

Signed-off-by: Esteban Ginez <esteban.ginez@docker.com>
2026-06-10 14:49:50 -07:00
Ben Cressey
0ec1af4cae Do not propagate reserved labels from image configs
Image config labels are copied onto the container by both the CRI
plugin (BuildLabels) and the client's WithImageConfigLabels option
used by `ctr run`. Labels in the containerd.io/* namespace are
interpreted by containerd itself and labels in the io.cri-containerd*
namespace are interpreted by the CRI plugin. An image config is not a
trusted source for labels in either namespace.

Skip labels in both reserved namespaces when copying labels from an
image config to a container, and warn about each label skipped: an
image that tries to set them may be attempting to alter containerd
behavior. Oversized image labels are already skipped this way by
the CRI plugin.

Labels set explicitly by clients, for example via `ctr run --label`
or in the CRI request, are unaffected.

Verified with the CRI plugin and with `ctr run` against an image
whose config carries labels like these: the labels are no longer
present on the created container and a warning is logged for each.

Assisted-by: Claude Code
Signed-off-by: Ben Cressey <ben@cressey.org>
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-06-10 13:18:24 -07:00
Samuel Karp
2454191ea6 Merge pull request #13562 from chrishenzie/fix-erofs-dmverity-tests
Configure udevd children-max for root-test
2026-06-10 02:32:14 +00:00
Chris Henzie
4adafdf7e1 Configure udevd children-max for root-test
GHA runners occasionally experience I/O constraints during root-test
test execution. While concurrent tests rapidly allocate loopback
devices, background udev probing stalls. This quickly exhausts
systemd-udevd's default worker pool ceiling (20 children max), stalling
netlink uevent processing so device-mapper device nodes are never
created for subsequent dm-verity test execution.

Logging cgroups v2 pids.peak telemetry confirmed peak in-flight udev
workers accumulate to 325 during test execution. Raising the
children-max limit to 500 provides comfortable buffer room so udevd
freely spawns worker processes without entering event lockup or causing
test timeouts.

Assisted-by: Antigravity
Signed-off-by: Chris Henzie <chrishenzie@gmail.com>
2026-06-09 17:59:56 -07:00
Samuel Karp
861ffc1097 cri: filter CDI annotations on checkpoint restore
Filter out any annotations on the checkpointed container matching
`cdi.k8s.io/` or exactly `cdi.k8s.io` during restore to prevent
unauthorized device restoration. When an annotation is denied, a warning
log is generated.

Tested by:
* Unit tests for exact matching, prefix boundaries, and metadata merging
* Complete CRI integration and checkpoint restore suite

Assisted-by: Antigravity
Signed-off-by: Samuel Karp <samuelkarp@google.com>
2026-06-09 16:56:45 -07:00
Samuel Karp
ade39c7c93 Merge pull request #13399 from lauralorenz/13355-nri-hook-leak
Add defer in event of mid-function failures in RunPodSandbox to avoid mount leaks
2026-06-09 18:10:57 +00:00
Samuel Karp
a769b7aea1 Merge pull request #13503 from lauralorenz/fuzz-upload-failures
Upload crash artifacts from go test -fuzz when failed
2026-06-09 18:03:29 +00:00
dependabot[bot]
719088fbaa build(deps): bump the golang-x group with 3 updates
Bumps the golang-x group with 3 updates: [golang.org/x/mod](https://github.com/golang/mod), [golang.org/x/sync](https://github.com/golang/sync) and [golang.org/x/sys](https://github.com/golang/sys).


Updates `golang.org/x/mod` from 0.36.0 to 0.37.0
- [Commits](https://github.com/golang/mod/compare/v0.36.0...v0.37.0)

Updates `golang.org/x/sync` from 0.20.0 to 0.21.0
- [Commits](https://github.com/golang/sync/compare/v0.20.0...v0.21.0)

Updates `golang.org/x/sys` from 0.45.0 to 0.46.0
- [Commits](https://github.com/golang/sys/compare/v0.45.0...v0.46.0)

---
updated-dependencies:
- dependency-name: golang.org/x/mod
  dependency-version: 0.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: golang-x
- dependency-name: golang.org/x/sync
  dependency-version: 0.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: golang-x
- dependency-name: golang.org/x/sys
  dependency-version: 0.46.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: golang-x
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-08 23:23:20 +00:00
dependabot[bot]
dfb00c4770 build(deps): bump github/codeql-action from 4.36.0 to 4.36.2
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.36.0 to 4.36.2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](7211b7c807...8aad20d150)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.36.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-08 23:23:19 +00:00