Commit Graph
100 Commits
Author SHA1 Message Date
Tomáš Rohlínek f98cfec679 fix(storage/fatfs): fix FAT32 mount integer overflow (CVE-2026-6682)
The initial CVE-2026-6682 fix hardened the exFAT mount path, but the CVE
as reported by runZero is a FAT32 defect in mount_volume() and is
reachable in the default configuration (exFAT and 64-bit LBA disabled).
This corrects the fix.

Root cause: `fasize *= fs->n_fats` is a DWORD multiply with no overflow
guard. A crafted BPB_FATSz32 such as 0x80000001 with NumFATs=2 wraps
`fasize` to 0x00000002. The wrapped (too-small) FAT size places
`fs->database` inside the FAT region, so a forged directory entry yields
an attacker-controlled `finfo.fsize`; a caller using it as a read length
overflows its buffer with attacker-controlled bytes (CVSS 7.6).

Fix: reject per-FAT and reserved+FAT+root system-area sizes that overflow
DWORD before they are used to derive the data-area base. The exFAT
cluster-heap/bitmap 64-bit promotions are retained as defense-in-depth
and relabeled (they are not CVE-2026-6682). SBOM reason updated.
2026-07-07 16:36:31 +02:00
Tomáš Rohlínek f9d3c54b3e fix(storage/fatfs): record non-applicable runZero 2026 CVEs in SBOM
Document the three runZero "Seven FatFs bugs" CVEs that require no source change
in this component, so vulnerability scanners have their disposition:

  - CVE-2026-6684: GPT partition-scan loop DoS. Already fixed upstream in R0.16,
    where test_gpt_header() caps the partition-entry count at 128.
  - CVE-2026-6686: read of uninitialized clusters after f_lseek() past EOF.
    Longstanding, behavioral; not a memory-safety defect and zero-filling every
    extended cluster is prohibitively costly on flash.
  - CVE-2026-6688: long-filename overflow in downstream callers. Not exposed in
    ESP-IDF; vfs_fat.c uses bounded copies and fname is bounded by FF_MAX_LFN.

Reference: https://www.runzero.com/blog/fatfs-bugs/
2026-07-06 14:40:51 +02:00
Tomáš Rohlínek 01f386cc1f fix(storage/fatfs): clamp exFAT volume-label length in f_getlabel() (CVE-2026-6687)
f_getlabel() extracts the exFAT volume label with a loop bounded by the on-disk
byte dj.dir[XDIR_NumLabel] (0-255):

    for (si = di = hs = 0; si < dj.dir[XDIR_NumLabel]; si++)
        wc = ld_16(dj.dir + XDIR_Label + si * 2);

The exFAT label field holds at most 11 UTF-16 units (22 bytes). A crafted
directory entry with a larger count both reads past the 22-byte label field and,
through put_utf(... &label[di], 4), writes past the end of the caller-provided
label buffer (the canonical API examples use small fixed stack buffers) -> stack
buffer overflow.

Clamp the character count to the exFAT maximum of 11 before the extraction loop.
Record the CVE in the component SBOM.

Note: f_getlabel() takes no destination-buffer size, so under UTF-8 output
(FF_LFN_UNICODE == 2) 11 units can still expand to up to 34 bytes; the clamp
downgrades this from attacker-unbounded to spec-bounded. ESP-IDF's VFS layer
does not call f_getlabel(); direct callers on untrusted media should size their
buffer accordingly. A complete fix requires an upstream size-aware API change.

Reference: https://www.runzero.com/blog/fatfs-bugs/
2026-07-06 14:40:50 +02:00
Tomáš Rohlínek e6e7c9f4bc fix(storage/fatfs): guard dirty-cache refill against unsigned LBA wrap (CVE-2026-6685)
After a direct multi-sector disk_read()/disk_write(), FatFs decides whether the
cached sector overlaps the direct-I/O range with:

    fp->sect - sect < cc          (and the FF_FS_TINY variant fs->winsect - sect < cc)

`sect`, `fp->sect` and `fs->winsect` are unsigned LBA_t. On 32-bit LBA_t builds,
if the cached sector is below `sect`, the subtraction wraps to a huge value that
can still compare `< cc`, so the code computes a bogus large offset:

  - in f_write() it mis-copies from the direct write buffer (data corruption);
  - in f_read() it is worse: memcpy(rbuff + (wrapped_offset * SS), ...) is an
    out-of-bounds WRITE into the caller-supplied read buffer.

Add an explicit lower-bound check (fp->sect >= sect, resp. fs->winsect >= sect)
before the range test on both the read and write paths and both the FF_FS_TINY
and normal variants, so the condition is exactly "cached sector lies within
[sect, sect + cc)". Record the CVE in the component SBOM.

Reference: https://www.runzero.com/blog/fatfs-bugs/
2026-07-06 14:40:50 +02:00
Tomáš Rohlínek 895de2abee fix(storage/fatfs): reject empty exFAT cluster heap and guard divisor (CVE-2026-6683)
The FAT12/16/32 mount path rejects a zero cluster count, but the exFAT path
accepted NumClusters == 0. That yields fs->n_fatent == 2, and sync_fs() later
computes the "percent in use" field as:

    ... * 100 / (fs->n_fatent - 2)

which is a division by zero (n_fatent - 2 == 0) -> crash. On a device that
syncs during an update this can brick the unit.

Reject ncl == 0 at exFAT mount time, and add a defense-in-depth
`fs->n_fatent > 2` guard around the division in sync_fs() so the divisor can
never be zero even if some future path produces such a filesystem object.
Record the CVE in the component SBOM.

Reference: https://www.runzero.com/blog/fatfs-bugs/
2026-07-06 14:40:50 +02:00
Tomáš Rohlínek 388efbf2b7 fix(storage/fatfs): fix exFAT mount integer overflow (CVE-2026-6682)
The exFAT mount path validates that the media is large enough to hold the
declared cluster heap with:

    if (maxlba < (QWORD)fs->database + ncl * fs->csize) ...

`ncl` (DWORD, up to MAX_EXFAT) and `fs->csize` (WORD) are both promoted to
`unsigned int`, so `ncl * fs->csize` is evaluated in 32-bit arithmetic and can
wrap before the QWORD promotion of the sum. A crafted image with a large
NumClusters/SecPerClus can therefore make an undersized volume pass the "size
is large enough" check; subsequent cluster->sector math then addresses media
outside the actual device.

Promote the multiply to 64-bit ((QWORD)ncl * fs->csize). Apply the same
promotion to the bitmap-base computation ((LBA_t)fs->csize * (bcl - 2)), which
has the identical overflow shape. Record the CVE in the component SBOM.

Reference: https://www.runzero.com/blog/fatfs-bugs/
2026-07-06 14:40:50 +02:00
Tomáš Rohlínek a1695a475b fix(storage/fatfs): correct SBOM version to R0.16
The vendored FatFs sources are revision R0.16 (FF_DEFINED == 80386, per
components/fatfs/src/ff.h and ff.c) but the SBOM recorded R0.15. Correct the
recorded version so vulnerability tracking matches the actual sources.
2026-07-06 14:40:50 +02:00
Tomas Rohlinek 118bc882c9 fix(network/http_server): fix clang-tidy warnings for missing close
Cherry-picked from 68b37333049383659d6ea73fa11a1d942994535a
2026-06-22 11:01:18 +02:00
Tomáš Rohlínek 68b34d9883 fix(stdio): check close_p return before decrementing fd count
If entry->ops->close_p() fails, do not decrement s_open_count
to prevent FD count corruption. Return early with the error code
instead.
2026-06-02 10:37:16 +02:00
Tomáš Rohlínek 42f3ed4d51 refactor(stdio): remove fd table, forward opens to primary backend
Remove the internal fd table (fd_entry_t, is_fd_valid, fd_allows_read/write,
ESP_STDIO_BASIC_MODE tracking) from the console VFS.

Instead, console_open forwards directly to the primary backend's open_p,
so each open("/dev/console") creates a real fd in the underlying driver.
Read/write/fstat/fcntl/fsync all operate on the per-open fd from the
primary, not a stored init-time fd.

Structure:
- s_primary: separate variable for the primary backend entry
- s_auxiliary[]: slot-based array for auxiliary sinks (NULL = free)
- Scans all slots (no count variable) with NULL guards
- Auxiliaries opened lazily on first console open
- Closed when last console fd is closed (refcounted via s_open_count)
- Write and fsync fan-out protected by s_lock
2026-06-02 10:37:16 +02:00
Tomáš Rohlínek 2f97cbc1bd fix(storage/vfs): Mark the correct version of function deprecated 2026-05-28 15:08:54 +02:00
Tomáš Rohlínek 9bc2b3d7ee fix(esp_stdio): add fd-table locking, per-fd flag checks, and Kconfig cleanup 2026-05-27 11:37:56 +02:00
Tomáš Rohlínek 52004409ce fix(esp_stdio): remap console select fd bits to sink device
Map logical /dev/console fds to the primary sink fd for select.
This avoids probing UART1/UART2 for stdout/stderr and keeps UART select state consistent.
Add stdio regression checks for logical fd mapping and symmetric uart_end_select teardown.
2026-05-27 11:37:56 +02:00
Tomáš Rohlínek c17caf8d23 test(mspi_test): relax Unity heap leak threshold for lazy stdio 2026-05-27 11:37:56 +02:00
Tomáš Rohlínek 8605931afc feat(system/esp_stdio): Add test coverage for esp_stdio refactor 2026-05-27 11:37:56 +02:00
Tomáš Rohlínek e08bed82c6 feat(storage/stdio): Refactor stdio_vfs multiplexer 2026-05-27 11:37:56 +02:00
Tomáš Rohlínek 1ee7028fbb fix(storage/esp_libc): Fix incorrect fd checks 2026-05-27 11:37:56 +02:00
Tomas Rohlinek c225eb59db Merge branch 'feat/update_littlefs' into 'master'
feat(storage/littlefs): Bump version to enable blockdev support

Closes IDF-12746

See merge request espressif/esp-idf!47358
2026-04-22 09:51:20 +02:00
Tomáš Rohlínek c54c523674 feat(storage/littlefs): Bump version to enable blockdev support 2026-04-08 09:45:12 +02:00
Tomas Rohlinek a23ff398d2 Merge branch 'docs/update_fatfs_config_docs' into 'master'
docs(storage/fatfs): Refactor fatfs docs

Closes IDF-9652, IDF-15454, and DOC-14113

See merge request espressif/esp-idf!46278
2026-03-31 14:02:59 +02:00
Tomáš Rohlínek 917e0fd255 docs(storage/fatfs): Fix problem with FatFs refactor 2026-03-31 10:20:49 +08:00
Tomáš Rohlínek 4af8f201b9 docs(storage/fatfs): Refactor FatFs documentation 2026-03-31 10:20:49 +08:00
Tomáš Rohlínek a07d018409 docs(storage/fatfs): Update LFN default and dynamic buffers docs 2026-03-31 10:20:49 +08:00
Tomas Rohlinek 03086cb4a5 Merge branch 'feature/add_blockdev_docs' into 'master'
feat(storage/blockdev): Add documentation including contracts for operations

Closes IDF-12759

See merge request espressif/esp-idf!43156
2026-03-26 16:17:17 +01:00
Tomáš Rohlínek d8e3106134 feat(storage/blockdev): Add documentation including contracts for operations 2026-03-26 12:20:35 +01:00
Tomas Rohlinek 99939bdcc2 Merge branch 'contrib/github_pr_18327' into 'master'
fix(fatfs): correct preprocessor guard for fail label when FF_FS_TINY=1 and FF_USE_DYN_BUFFER=1 (GitHub PR)

Closes IDFGH-17355

See merge request espressif/esp-idf!46742
2026-03-23 19:45:48 +01:00
Tomáš Rohlínek ec1969c1fc fix(storage/esp_blockdev): Update docs for doxygen 2026-03-19 14:48:56 +01:00
Tomas Rohlinek 99c09321a6 Merge branch 'feat/bdl_generic_partition' into 'master'
feat(storage/blockdev): Add generic partition and memory mapping blockdev drivers

Closes IDF-12750

See merge request espressif/esp-idf!39989
2026-03-19 10:53:44 +01:00
Tomáš Rohlínek ec7acbbbfc feat(storage/blockdev): Update description for ioctl commands 2026-03-19 08:56:34 +01:00
Tomáš Rohlínek 54b04cd2ca feat(storage/blockdev_util): Add the component to CODEOWNERS 2026-03-19 08:56:34 +01:00
Tomáš Rohlínek d2ff18b047 feat(storage/blockdev): Add generic partition blockdev driver 2026-03-19 08:56:21 +01:00
Tomáš Rohlínek 63a708fcaa feat(storage/blockdev): Add memory mapping device driver 2026-03-19 08:54:39 +01:00
Tomas Rohlinek 38ee8df910 Merge branch 'chore/update_filesystem_considerations_codeowners' into 'master'
docs(storage): Move file system considerations doc guide ownership under storage

See merge request espressif/esp-idf!46732
2026-03-18 12:43:13 +01:00
Tomáš Rohlínek 8ad3ae4263 docs(storage): Move file system considerations doc guide under storage 2026-03-18 09:58:36 +01:00
Tomas Rohlinek 3c499632c7 Merge branch 'feat/unify_vfs_api' into 'master'
feat(storage/vfs): Unify VFS API by removing context-less APIs

Closes IDF-15107

See merge request espressif/esp-idf!44161
2026-03-13 15:05:04 +01:00
Tomáš Rohlínek 405b82921d feat(storage/vfs): Document context-less API deprecation 2026-03-11 11:04:34 +01:00
Tomáš Rohlínek a46fec8d96 feat(storage/vfs): Remove usage of context less VFS APIs 2026-03-11 11:03:43 +01:00
Tomáš Rohlínek 859ca9e5e2 feat(storage/vfs): Deprecate context-less function pointers 2026-03-11 11:03:37 +01:00
Tomas Rohlinek 12f36a021f Merge branch 'feat/align_fatfs_buffers' into 'master'
feat(storage/fatfs): Allow fatfs buffers to be aligned for DMA access

Closes IDF-9714

See merge request espressif/esp-idf!44942
2026-03-03 18:09:50 +01:00
Tomáš Rohlínek 96f820e535 feat(storage/fatfs): Allow fatfs buffers to be aligned for DMA access 2026-02-25 12:50:20 +01:00
Tomas Rohlinek 0b096cccbb Merge branch 'fix/poll_return_value' into 'master'
fix(storage/esp_libc): Fix poll return value discrepancy

Closes IDF-9973

See merge request espressif/esp-idf!44943
2026-02-25 08:28:48 +01:00
Tomas Rohlinek ff2b43f31b Merge branch 'fix/minimize_dependencies' into 'master'
feat(storage): Minimize dependencies for test cases

Closes IDF-15321

See merge request espressif/esp-idf!45832
2026-02-24 16:06:21 +01:00
Tomáš Rohlínek d509422fec fix(vfs): clear dummy select output fd sets
Zero dummy VFS output fd sets in start_select.
This keeps revents limited to readiness from end_select.
It prevents spurious POLLERR bits in poll() regression tests.
2026-02-19 11:27:21 +01:00
Tomáš Rohlínek 4575ac1f5e feat(storage): Minimize dependencies for test cases 2026-02-18 13:43:27 +01:00
Tomas Rohlinek d32b88dffb Merge branch 'fix/esp_partition_blockdev_sizes' into 'master'
fix(storage/partition): Update sizes in blockdev geometry in read-only mode for compatibility

See merge request espressif/esp-idf!45646
2026-02-05 21:06:51 +01:00
Tomáš Rohlínek 49b1871545 fix(storage/partition): Update sizes in blockdev geometry in read-only mode for compatibility 2026-02-05 15:35:05 +01:00
Tomas Rohlinek f0bf3ca1c0 Merge branch 'fix/vfs_missing_va_end' into 'master'
fix(storage/vfs): Remove va_end leak in ioctl caused by early return in macro

Closes IDF-15111

See merge request espressif/esp-idf!44923
2026-01-29 12:03:11 +01:00
Tomas Rohlinek 059f49ceff Merge branch 'docs/fatfs_change_of_defaults' into 'master'
docs(storage): Update migration guide

Closes IDF-14188

See merge request espressif/esp-idf!44396
2026-01-22 15:08:02 +01:00
Tomáš Rohlínek d7344e9658 fix(storage/esp_libc): Fix poll return value discrepancy 2026-01-14 08:28:05 +01:00
Tomáš Rohlínek 8e41da1aa1 fix(storage/vfs): Remove va_end leak in ioctl caused by early return in macro 2026-01-08 12:01:56 +01:00
Tomáš Rohlínek f2a655b866 docs(storage): Update migration guide 2026-01-08 08:49:47 +01:00
Tomas Rohlinek 203c4da5f8 Merge branch 'feat/vfs_remove_old_api' into 'master'
feat(storage/vfs): v6 API breaking changes

Closes DOC-13273

See merge request espressif/esp-idf!42182
2025-12-17 20:21:27 +01:00
Tomáš Rohlínek 18c5aa7b80 docs(storage/vfs): Add migration guide for breaking changes 2025-12-16 17:48:55 +08:00
Tomáš Rohlínek 3e41a5de6f feat(storage/vfs): Deprecate legacy API 2025-12-16 17:48:55 +08:00
Tomáš Rohlínek 515975d2bb feat(storage/vfs): Make lwip specific API private 2025-12-16 17:48:55 +08:00
Tomáš Rohlínek 8c9d62de98 feat(storage/vfs): Remove old API usage 2025-12-16 17:48:55 +08:00
Tomáš Rohlínek 4814f06283 feat(storage/vfs): refactor VFS calls to multiple files 2025-12-16 17:48:55 +08:00
Tomáš Rohlínek 36045c6ca1 feat(storage/fatfs): Make host_test results easier to understand 2025-11-10 12:48:53 +01:00
Tomáš Rohlínek f781970329 feat(storage/fatfs): Update to FatFS R0.16 2025-11-10 12:42:52 +01:00
Tomas Rohlinek 06004072cb Merge branch 'feat/vfs_disable_termios_by_default' into 'master'
feat(storage/vfs): Disable termios support by default

Closes IDF-7998

See merge request espressif/esp-idf!42175
2025-10-23 13:25:11 +02:00
Tomas Rohlinek 734c1725fb Merge branch 'feat/fatfs_update_default_options' into 'master'
feat(storage/fatfs): Update default configuration to better fit average usecase

Closes IDF-14042

See merge request espressif/esp-idf!42174
2025-10-23 13:23:13 +02:00
Tomas Rohlinek 7d7c5f1412 Merge branch 'fix/vfs_new_api_docs' into 'master'
fix(storage/vfs): Fix typo in code snippet in docs

Closes IDF-14285

See merge request espressif/esp-idf!42609
2025-10-15 13:34:15 +02:00
Tomáš Rohlínek 4568f6c776 fix(storage/vfs): Fix typo in code snippet in docs 2025-10-15 10:08:52 +02:00
Tomáš Rohlínek f6ba0d8aa0 feat(storage/fatfs): Update default configuration to better fit average usecase 2025-10-15 09:30:02 +02:00
Tomáš Rohlínek d99e984a90 feat(storage/vfs): Disable termios support by default 2025-10-15 09:29:34 +02:00
Tomas Rohlinek bf1b16554a Merge branch 'feat/socket_count_checks' into 'master'
feat(network/lwip): Add checks for maximum socket count

Closes IDF-12788

See merge request espressif/esp-idf!38642
2025-04-30 14:52:01 +08:00
Tomáš Rohlínek fccd8d1a5b feat(network/lwip): Add checks for maximum socket count 2025-04-23 08:36:43 +02:00
Tomas Rohlinek 7005b101bf Merge branch 'fix/fatfs_use_dyn_buf_kconfig_mistake' into 'master'
fix(fatfs): Mistake in Kconfig for FATFS_USE_DYN_BUFFERS

Closes IDF-11789

See merge request espressif/esp-idf!35182
2025-04-09 23:45:03 +08:00
Tomáš Rohlínek b1997ebab6 feat(storage/fatfs): add dynamic buffer usage test 2025-04-09 14:02:44 +02:00
Tomas Rohlinek f945dae618 Merge branch 'contrib/github_pr_15247' into 'master'
refactor(components/fatfs): replace assert expression (GitHub PR)

Closes IDFGH-14473

See merge request espressif/esp-idf!38194
2025-04-02 18:21:55 +08:00
Tomáš Rohlínek be6e24370f fix(storage/nvf_flash): fixup additions from PR 2025-03-28 12:57:33 +01:00
Tomas Rohlinek 7d365f7b42 Merge branch 'fix/fatfsgen_tests' into 'master'
fix(storage/fatfsgen): increase test timeout

Closes IDFCI-2681

See merge request espressif/esp-idf!37702
2025-03-13 16:30:31 +08:00
Tomáš Rohlínek f416523e16 fix(storage/fatfsgen): increase test timeout 2025-03-12 14:45:39 +01:00
Tomáš Rohlínek df8a16281b feat(storage/fatfs): increase log legibility for fatfs mount 2025-02-28 14:59:48 +01:00
Tomáš Rohlínek 09aae72bfa docs(storage/fatfs): discrepancies between FATFS and POSIX
Closes https://github.com/espressif/esp-idf/issues/15187
2025-02-13 10:15:52 +01:00
Tomáš Rohlínek 67638981ec feat(storage/vfs): cleanup path prefix handling 2025-02-07 10:34:24 +01:00
Tomáš Rohlínek a45b12a68b feat(storage/vfs): improve mountpoint table memory usage 2025-01-30 09:07:51 +01:00
Tomas Rohlinek 9f253c7d7c Merge branch 'fix/fatfs_use_standard_flex_arrays' into 'master'
fix(storage/fatfs): use standard flex-array fields, instead of extension

See merge request espressif/esp-idf!36666
2025-01-29 17:31:56 +08:00
Tomáš Rohlínek a700e7c210 fix(storage/fatfs): use standard flex-array fields, instead of extension 2025-01-29 09:08:44 +01:00
Tomáš Rohlínek f9d6e356bf fix(storage/fatfsgen): broken test_apps scripts for fatfsgen 2025-01-16 13:41:57 +01:00
Tomáš Rohlínek 2140c9b688 fix(storage/fatfsgen): broken test_apps scripts for fatfsgen 2025-01-16 12:13:16 +01:00
Tomas Rohlinek 89045a1ff2 Merge branch 'feat/bump_esp_littlefs_1_16_0' into 'master'
feat(storage/examples): bump littlefs version to 1.16.0

Closes IDF-11691

See merge request espressif/esp-idf!35823
2024-12-23 17:04:52 +08:00
Tomas Rohlinek b5ac4fbdf9 Merge branch 'fix/esp_vfs_register_fd_range_warning_message' into 'master'
fix(storage/vfs): incorrect log level in esp_vfs_register_fd_range

Closes IDFGH-13421

See merge request espressif/esp-idf!35682
2024-12-19 22:22:31 +08:00
Tomáš Rohlínek 0fe0637cfe feat(storage/examples): bump littlefs version to 1.16.0 2024-12-19 14:11:15 +01:00
Tomáš Rohlínek 5e53f2975e fix(storage/vfs): incorrect log level in esp_vfs_register_fd_range
Closes https://github.com/espressif/esp-idf/issues/14327
2024-12-16 15:12:11 +01:00
Tomáš Rohlínek 86e5039fc9 feat(storage/vfs): make all member pointer of vfs_ops struct const 2024-12-12 13:03:30 +01:00
Tomáš Rohlínek d5d295cf7a fix(storage/console): fix test configuration 2024-11-28 13:34:25 +01:00
Tomáš Rohlínek f59362266a fix(storage/vfs_console): stop new console opens from overwriting existing fds 2024-11-28 13:12:22 +01:00
Tomas Rohlinek 408ae4c560 Merge branch 'feature/switch_to_new_vfs_api' into 'master'
feat(storage): switch to new VFS API

Closes IDF-11473

See merge request espressif/esp-idf!32029
2024-11-22 16:51:46 +08:00
Tomáš Rohlínek 65575bfe4d feat(storage/vfs): move semihost to new vfs API 2024-11-21 07:41:43 +01:00
Tomáš Rohlínek 9b4d11fb3c feat(storage/vfs): move l2tap to new vfs API 2024-11-21 07:41:43 +01:00
Tomáš Rohlínek aae0825587 feat(storage/esp_vfs_console): move console to new vfs API 2024-11-21 07:41:42 +01:00
Tomáš Rohlínek fbb5d9063e feat(storage/vfs): move jtag driver to new vfs API 2024-11-21 07:41:42 +01:00
Tomáš Rohlínek 2821ad7920 feat(storage/vfs): move uart driver to new vfs API 2024-11-21 07:41:42 +01:00
Tomáš Rohlínek 19eb0d6d02 feat(storage/vfs): move nullfs to new API 2024-11-21 07:41:42 +01:00
Tomáš Rohlínek 3d079312b1 feat(storage/vfs): make part of nullfs API private 2024-11-21 07:41:41 +01:00
Tomáš Rohlínek 10e74d3abb feat(storage/esp_vfs_console): move cdcacm driver to new vfs API 2024-11-21 07:41:41 +01:00
Tomáš Rohlínek ae1e8a2ea3 feat(storage/vfs): update docs to new version of API 2024-11-21 07:41:41 +01:00
Tomáš Rohlínek d7c487178c feat(storage/spiffs): move spiffs to new VFS API 2024-11-21 07:41:41 +01:00
Tomáš Rohlínek fdffba6f4c feat(storage/fatfs): move fatfs to new VFS API 2024-11-21 07:41:40 +01:00