Skip to content
Mach trap#-100

svc · mach trap -100

iokit_user_client_trap

Fast-path trap for invoking selectors on an IOUserClient without going through MIG.

Prototype

kern_return_t iokit_user_client_trap(/* 8 args */);

Returns: kern_return_t

Version history

XNU tagmacOS#
xnu-792macOS 10.4 Tiger-100
xnu-1228macOS 10.5 Leopard-100
xnu-1456.1.26macOS 10.6 Snow Leopard-100
xnu-1699.24.8macOS 10.7 Lion-100
xnu-2050.18.24macOS 10.8 Mountain Lion-100
xnu-2422.115.4macOS 10.9 Mavericks-100
xnu-2782.40.9macOS 10.10 Yosemite-100
xnu-3247.1.106macOS 10.11 El Capitan-100
xnu-3789.1.32macOS 10.12 Sierra-100
xnu-4570.1.46macOS 10.13 High Sierra-100
xnu-4903.221.2macOS 10.14 Mojave-100
xnu-6153.11.26macOS 10.15 Catalina-100
xnu-7195.50.7.100.1macOS 11.0 Big Sur-100
xnu-8019.41.5macOS 12.0 Monterey-100
xnu-8792.41.9macOS 13.0 Ventura-100
xnu-10002.1.13macOS 14.0 Sonoma-100
xnu-11215.1.10macOS 15.0 Sequoia-100
xnu-11417.101.15macOS 15.4 Sequoia-100
xnu-12377.1.9macOS 26.0 Tahoe-100
xnu-10002.41.9—-100
xnu-10002.61.3—-100
xnu-10002.81.5—-100
xnu-10063.101.15—-100
xnu-10063.121.3—-100
xnu-10063.141.1—-100
xnu-11215.41.3—-100
xnu-11215.61.5—-100
xnu-11215.81.4—-100
xnu-11417.121.6—-100
xnu-11417.140.69—-100
xnu-1228.0.2—-100
xnu-1228.12.14—-100
xnu-1228.15.4—-100
xnu-1228.3.13—-100
xnu-1228.5.18—-100
xnu-1228.5.20—-100
xnu-1228.7.58—-100
xnu-1228.9.59—-100
xnu-12377.101.15—-100
xnu-12377.41.6—-100
xnu-12377.61.12—-100
xnu-12377.81.4—-100
xnu-1486.2.11—-100
xnu-1504.15.3—-100
xnu-1504.3.12—-100
xnu-1504.7.4—-100
xnu-1504.9.17—-100
xnu-1504.9.26—-100
xnu-1504.9.37—-100
xnu-1699.22.73—-100
xnu-1699.22.81—-100
xnu-1699.24.23—-100
xnu-1699.26.8—-100
xnu-1699.32.7—-100
xnu-2050.22.13—-100
xnu-2050.24.15—-100
xnu-2050.48.11—-100
xnu-2050.7.9—-100
xnu-2050.9.2—-100
xnu-2422.1.72—-100
xnu-2422.100.13—-100
xnu-2422.110.17—-100
xnu-2422.90.20—-100
xnu-2782.1.97—-100
xnu-2782.10.72—-100
xnu-2782.20.48—-100
xnu-2782.30.5—-100
xnu-3247.10.11—-100
xnu-3248.20.55—-100
xnu-3248.30.4—-100
xnu-3248.40.184—-100
xnu-3248.50.21—-100
xnu-3248.60.10—-100
xnu-3789.21.4—-100
xnu-3789.31.2—-100
xnu-3789.41.3—-100
xnu-3789.51.2—-100
xnu-3789.60.24—-100
xnu-3789.70.16—-100
xnu-4570.20.62—-100
xnu-4570.31.3—-100
xnu-4570.41.2—-100
xnu-4570.51.1—-100
xnu-4570.61.1—-100
xnu-4570.71.2—-100
xnu-4903.231.4—-100
xnu-4903.241.1—-100
xnu-4903.270.47—-100
xnu-6153.101.6—-100
xnu-6153.121.1—-100
xnu-6153.141.1—-100
xnu-6153.41.3—-100
xnu-6153.61.1—-100
xnu-6153.81.5—-100
xnu-7195.101.1—-100
xnu-7195.121.3—-100
xnu-7195.141.2—-100
xnu-7195.60.75—-100
xnu-7195.81.3—-100
xnu-792.1.5—-100
xnu-792.10.96—-100
xnu-792.12.6—-100
xnu-792.13.8—-100
xnu-792.17.14—-100
xnu-792.18.15—-100
xnu-792.2.4—-100
xnu-792.21.3—-100
xnu-792.22.5—-100
xnu-792.24.17—-100
xnu-792.25.20—-100
xnu-792.6.22—-100
xnu-792.6.56—-100
xnu-792.6.61—-100
xnu-792.6.70—-100
xnu-792.6.76—-100
xnu-8019.61.5—-100
xnu-8019.80.24—-100
xnu-8020.101.4—-100
xnu-8020.121.3—-100
xnu-8020.140.41—-100
xnu-8792.61.2—-100
xnu-8792.81.2—-100
xnu-8796.101.5—-100
xnu-8796.121.2—-100
xnu-8796.141.3—-100

Notes

Drivers expose externalMethod selectors to user-space via IOConnectCallMethod; for selectors that take small scalar arguments and no structures, the libIOKit code path collapses into iokit_user_client_trap, which dispatches directly into the driver's IOUserClient::getTargetAndTrapForIndex. This trap is heavily used by GPU drivers, audio HAL, and HID. Selectors and arguments are entirely driver-defined, so this is a common attack surface for kernel exploits — drivers must validate inputs aggressively.

Detection

DTrace mach_trap:::entry with probefunc == "iokit_user_client_trap" exposes the connect port and selector index; ioreg(8) and ioclasscount give context on which driver is being called. Endpoint Security does not surface IOKit traffic.

Related APIs

IOConnectCallMethodIOConnectCallScalarMethodIOServiceOpenIOUserClient::externalMethod