summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mauderer <christian.mauderer@embedded-brains.de>2021-04-13 13:55:11 +0200
committerChristian Mauderer <christian.mauderer@embedded-brains.de>2021-04-19 09:02:22 +0200
commit00a5f9748e3c6757140efda393cd474881e2c7fa (patch)
tree3a9ca8f241b4abd3a7626356b6f8016fc8b3bc25
parentSTM32H7: Fix SDMMC build for all other BSPs (diff)
downloadrtems-libbsd-00a5f9748e3c6757140efda393cd474881e2c7fa.tar.bz2
MMCSD: Use cache aligned alloc for ioctl
Some drivers can't easily work with buffers that are not cache aligned and have an arbitrary length. Therefore use an aligned malloc instead.
-rw-r--r--freebsd/sys/dev/mmc/mmcsd.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/freebsd/sys/dev/mmc/mmcsd.c b/freebsd/sys/dev/mmc/mmcsd.c
index 21f54046..bd45b419 100644
--- a/freebsd/sys/dev/mmc/mmcsd.c
+++ b/freebsd/sys/dev/mmc/mmcsd.c
@@ -1196,7 +1196,11 @@ mmcsd_ioctl_cmd(struct mmcsd_part *part, struct mmc_ioc_cmd *mic, int fflag)
goto out;
}
if (len != 0) {
+#ifndef __rtems__
dp = malloc(len, M_TEMP, M_WAITOK);
+#else /* __rtems__ */
+ dp = rtems_cache_aligned_malloc(len);
+#endif /* __rtems__ */
err = copyin((void *)(uintptr_t)mic->data_ptr, dp, len);
if (err != 0)
goto out;