Page MenuHomeFreeBSD

iflib: initialize netmap with the correct number of descriptors
ClosedPublic

Authored by vmaffione on Jul 1 2020, 7:24 PM.
Tags
None
Referenced Files
F168050851: D25541.id74720.diff
Wed, Aug 26, 3:41 AM
Unknown Object (File)
Mon, Aug 24, 2:21 AM
Unknown Object (File)
Fri, Aug 21, 6:34 PM
Unknown Object (File)
Thu, Aug 20, 7:05 PM
Unknown Object (File)
Tue, Aug 18, 2:36 PM
Unknown Object (File)
Sat, Aug 15, 5:54 PM
Unknown Object (File)
Sat, Aug 15, 4:32 AM
Unknown Object (File)
Thu, Aug 13, 1:36 PM
Subscribers

Details

Summary

In case the network device has a RX or TX control queue, the correct number of TX/RX descriptors is contained
in the second entry of the isc_ntxd (or isc_nrxd) array, rather than in the first entry.
This case is correctly handled by iflib_device_register() and iflib_pseudo_register(), but not by
iflib_netmap_attach(). If the first entry is larger than the second, this can result in a panic.
This change fixes the bug by introducing two helper functions that also lead to some code simplification.

PR 247647 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=247647

Test Plan

Tested on vmx0 interface on QEMU/KVM. After the fix, iflib does not panic anymore.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

The PR reporter has tested the patch and confirmed that the panic has been fixed. See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=247647

This revision was not accepted when it landed; it landed in state Needs Review.Jul 20 2020, 9:09 PM
This revision was automatically updated to reflect the committed changes.