Skip to content

Answer unknown ioctl commands quietly with -ENOTTY - #4

Merged
JohnAmadis merged 1 commit into
mainfrom
claude/sweet-tesla-mlran5
Sep 29, 2026
Merged

JohnAmadis merged 1 commit into
mainfrom
claude/sweet-tesla-mlran5

Conversation

@JohnAmadis

@JohnAmadis JohnAmadis commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Problem

dmdevfs now probes every node with the standard DMDRVI_IOCTL_BLOCK_GET_INFO (0x100) and DMDRVI_IOCTL_MONITOR_GET_POLICY (0x200) commands to classify it. dmtty treated these as errors, so the log filled with:

dmtty: [ERROR] dmtty: invalid ioctl command 512
dmtty: [ERROR] dmtty: invalid ioctl command 256

Changes

  • Unknown command → -ENOTTY, no log. This is the dmdrvi convention for commands a driver does not implement, and dmdevfs reads any non-zero result as "not this class". The default: branch of the switch changed the same way.
  • Private commands now start at DMDRVI_IOCTL_CUSTOM_BASE. They used to start at 1, which collides with the standard DMDRVI_IOCTL_NET_* range (0x01..0x05). For example, NET_SET_MAC_ADDR would have been read as dmtty_ioctl_cmd_get_flags. dmtty_types.h now includes dmdrvi_ioctl.h, so the tty tool also links the dmdrvi module headers.

⚠️ The numeric values of dmtty_ioctl_cmd_t change. Callers that use the enum names only need a rebuild; hard-coded numbers must be updated. Any out-of-repo code that includes dmtty_types.h/dmtty.h now needs the dmdrvi headers on its include path.

Testing

A syntax-only compile (gcc -fsyntax-only) against the dmdrvi/dmod headers shows no errors in the changed code, and the CMake configure step passes. A full module build and a hardware run were not done here.

🤖 Generated with Claude Code

https://claude.ai/code/session_016sVYVjrMNmMfPjWQkkGJTM

dmdevfs now probes every node with the standard DMDRVI_IOCTL_BLOCK_GET_INFO
(0x100) and DMDRVI_IOCTL_MONITOR_GET_POLICY (0x200) commands to classify it,
so dmtty logged an "invalid ioctl command" error for every probe. Unknown
commands are not an error for a driver: return -ENOTTY without logging, as
dmdrvi documents.

Also move dmtty's private commands to DMDRVI_IOCTL_CUSTOM_BASE (0x1000): they
started at 1, colliding with the standard DMDRVI_IOCTL_NET_* range (0x01..),
so a generic network probe would have been misread as a dmtty command.
Callers using the enum names only need a rebuild.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016sVYVjrMNmMfPjWQkkGJTM
@JohnAmadis
JohnAmadis merged commit 4aedc8c into main Sep 29, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants