On 31.03.2023 14:55:11, Michal Sojka wrote: > When using select/poll/epoll() with a non-blocking ISOTP socket to > wait for when non-blocking write is possible, false EPOLLOUT event is > sometimes returned. This can happen at least after sending a message > which must be split to multiple CAN frames. > > The reason is that isotp_sendmsg() returns -EAGAIN when tx.state is > not equal to ISOTP_IDLE and this behavior is not reflected in > datagram_poll(), which is used in isotp_ops. > > This is fixed by introducing ISOTP-specific poll function, which > suppresses the EPOLLOUT events in that case. > > Signed-off-by: Michal Sojka <michal.sojka@xxxxxxx> > Reported-by: Jakub Jira <jirajak2@xxxxxxxxxxx> > Tested-by: Oliver Hartkopp <socketcan@xxxxxxxxxxxx> > Acked-by: Oliver Hartkopp <socketcan@xxxxxxxxxxxx> Applied. Thanks, Marc -- Pengutronix e.K. | Marc Kleine-Budde | Embedded Linux | https://www.pengutronix.de | Vertretung Nürnberg | Phone: +49-5121-206917-129 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-9 |
Attachment:
signature.asc
Description: PGP signature