1
0
Fork 0

Fix example/CO_storageLinux.c.

CO_LOCK_OD(CANmodule) must not be used, because lock is already
applied by SDO server.
This commit is contained in:
Janez 2024-10-10 16:12:04 +02:00
parent 059c6b5038
commit ef12016a55
2 changed files with 4 additions and 3 deletions

@ -1 +1 @@
Subproject commit 05931a6b763299cc1bff2eb8c6926f086bc55131
Subproject commit 29c5b64131654b6f6f2171c64a1d5ce8031bcaa0

View file

@ -33,6 +33,7 @@
*/
static ODR_t
storeLinux(CO_storage_entry_t* entry, CO_CANmodule_t* CANmodule) {
(void)CANmodule;
ODR_t ret = ODR_OK;
uint16_t crc_store;
@ -61,10 +62,10 @@ storeLinux(CO_storage_entry_t* entry, CO_CANmodule_t* CANmodule) {
if (fp == NULL) {
ret = ODR_HW;
} else {
CO_LOCK_OD(CANmodule);
/* following two lines are subject to race conditions. This function is called only by SDO server
* and so it is already protected by CO_LOCK_OD. */
size_t cnt = fwrite(entry->addr, 1, entry->len, fp);
crc_store = crc16_ccitt(entry->addr, entry->len, 0);
CO_UNLOCK_OD(CANmodule);
cnt += fwrite(&crc_store, 1, sizeof(crc_store), fp);
fclose(fp);
if (cnt != (entry->len + sizeof(crc_store))) {