5 Commits
Author SHA1 Message Date
Paul Hollinsky 8a21b53cd1 v2.0.5
Add support for kernels 5.9+
	Tested on 5.11.0-rc5

CAN frames with length > 8 from userspace are rejected rather
than truncated
2021-01-29 15:54:24 -05:00
Paul Hollinsky 9da27da69e Use non-sensitive kfree function
This is not sensitive data, kzfree was just used for symmetry.

kzfree was actually renamed to kfree_sensitive to show that
the symmetry was unfounded.

This change will allow us to compile in kernels 5.10+
2021-01-29 15:50:05 -05:00
Paul Hollinsky 6bbcf1b527 Reject CAN frames with length > 8
Previously, they were just truncated.

In any case, this is only hit if the userspace daemon
gives us more than 8 bytes for CAN, which it shouldn't.
2021-01-29 15:47:43 -05:00
ARughani-IntrepidandPaul Hollinsky 668e50d08c Typo "accomplished" 2020-08-06 18:10:07 -04:00
Paul Hollinsky 6025ea1349 v2.0.4
Ensure carrier is up on new kernels which require it
2019-11-13 22:49:35 -05:00
3 changed files with 18 additions and 5 deletions
+8
View File
@@ -1,3 +1,11 @@
v2.0.5
Add support for kernels 5.9+
Tested on 5.11.0-rc5
CAN frames with length > 8 from userspace are rejected rather than truncated
v2.0.4
Ensure carrier is up on new kernels which require it
v2.0.3
Add support for kernels 5.1+
Tested on 5.3.0 (Ubuntu 19.10)
+2 -2
View File
@@ -1,10 +1,10 @@
Version 2.0.3
Version 2.0.5
This is the kernel object portion of the Intrepid Control Systems SocketCAN support. For SocketCAN to work with Intrepid devices you will need to have this kernel object loaded on your system. Once the module is built and loaded run [icsscand](https://github.com/intrepidcs/icsscand) to turn on SocketCAN support.
First, install the necessary dependencies for building kernel modules.
On Ubuntu, this is acomplished by running `sudo apt install linux-headers-generic build-essential gcc git`
On Ubuntu, this is accomplished by running `sudo apt install linux-headers-generic build-essential gcc git`
Clone this repository by running `git clone https://github.com/intrepidcs/intrepid-socketcan-kernel-module.git`
+8 -3
View File
@@ -57,7 +57,7 @@
#define KO_DESC "Netdevice driver for Intrepid CAN/Ethernet devices"
#define KO_MAJOR 2
#define KO_MINOR 0
#define KO_PATCH 3
#define KO_PATCH 5
#define KO_VERSION str(KO_MAJOR) "." str(KO_MINOR) "." str(KO_PATCH)
#define KO_VERSION_INT (KO_MAJOR << 16) | (KO_MINOR << 8) | KO_PATCH
@@ -273,6 +273,7 @@ static int intrepid_netdevice_stop(struct net_device *dev)
spin_lock_bh(&ics->lock);
netif_stop_queue(dev);
netif_carrier_off(dev);
spin_unlock_bh(&ics->lock);
return 0;
@@ -281,6 +282,7 @@ static int intrepid_netdevice_stop(struct net_device *dev)
static int intrepid_netdevice_open(struct net_device *dev)
{
netif_start_queue(dev);
netif_carrier_on(dev);
return 0;
}
@@ -469,7 +471,10 @@ static int intrepid_fill_can_frame_from_neomessage(
if (msg->status.remoteFrame)
cf->can_id |= CAN_RTR_FLAG;
cf->can_dlc = get_can_dlc(msg->length);
if (unlikely(msg->length > 8))
return -1;
cf->can_dlc = msg->length;
memcpy(cf->data, data, cf->can_dlc);
stats->rx_bytes += cf->can_dlc;
@@ -833,7 +838,7 @@ exit:
return ret;
free_net_devices:
kzfree(net_devices);
kfree(net_devices);
free_shared_mem:
vfree(shared_mem);
return ret;