![]() There are many functions that take ownership of the I/O buffer they are passed as a parameter. The caller should not retain a pointer to the I/O buffer. Use iob_disown() to automatically nullify the caller's pointer, e.g.: xfer_deliver_iob ( xfer, iob_disown ( iobuf ) ); This will ensure that iobuf is set to NULL for any code after the call to xfer_deliver_iob(). iob_disown() is currently used only in places where it simplifies the code, by avoiding an extra line explicitly setting the I/O buffer pointer to NULL. It should ideally be used with each call to any function that takes ownership of an I/O buffer. (The SSA optimisations will ensure that use of iob_disown() gets optimised away in cases where the caller makes no further use of the I/O buffer pointer anyway.) If gcc ever introduces an __attribute__((free)), indicating that use of a function argument after a function call should generate a warning, then we should use this to identify all applicable function call sites, and add iob_disown() as necessary. |
||
---|---|---|
.. | ||
tcp | ||
udp | ||
aoe.c | ||
arp.c | ||
dhcpopts.c | ||
dhcppkt.c | ||
ethernet.c | ||
fakedhcp.c | ||
icmpv6.c | ||
infiniband.c | ||
iobpad.c | ||
ipv4.c | ||
ipv6.c | ||
ndp.c | ||
netdev_settings.c | ||
netdevice.c | ||
nullnet.c | ||
rarp.c | ||
retry.c | ||
tcp.c | ||
tcpip.c | ||
tls.c | ||
udp.c |