Subject: Fw: [Bug 205533] New: The flexcan/socketcan driver does not block and returns an error if all buffers are in use on transmit.

From: Stephen Hemminger <[email-masked]>
Date: Fri, 15 Nov 2019 08:21:36 -0800

Begin forwarded message:

Date: Thu, 14 Nov 2019 17:10:29 +0000
From: [email-masked]
To: [email-masked]
Subject: [Bug 205533] New: The flexcan/socketcan driver does not block and returns an error if all buffers are in use on transmit.

https://bugzilla.kernel.org/show_bug.cgi?id=205533

            Bug ID: 205533
           Summary: The flexcan/socketcan driver does not block and
                    returns an error if all buffers are in use on
                    transmit.
           Product: Networking
           Version: 2.5
    Kernel Version: 4.14.149
          Hardware: ARM
                OS: Linux
              Tree: Mainline
            Status: NEW
          Severity: low
          Priority: P1
         Component: Other
          Assignee: [email-masked]
          Reporter: [email-masked]
        Regression: No

When the output buffer is saturated, even if the socket is set up for blocking
use, a "write" to the CAN socket may result in a -1 return value with errno set
to 105 (ENOBUFS).

The socket is created using socket(PF_CAN, SOCK_RAW, CAN_RAW). SO_SNDBUF is set
to 2240. fcntl is used to disable O_NONBLOCK.

I see the error case after "many" sends. In this situation three separate
processes are sharing the CAN bus on the local processor. The error only occurs
when all processes are heavily using the bus (set at 1 MHz), and there does not
appear to be a normal re-entrancy issue with the driver.

-- 
You are receiving this mail because:
You are the assignee for the bug.