rpmsg/hostfs: fix: taking address of packed member may result in an unaligned pointer value
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
parent
1c024a6d39
commit
261ce70e94
|
@ -361,10 +361,15 @@ static int hostfs_rpmsg_fstat_handler(FAR struct rpmsg_endpoint *ept,
|
||||||
FAR struct hostfs_rpmsg_server_s *priv = priv_;
|
FAR struct hostfs_rpmsg_server_s *priv = priv_;
|
||||||
FAR struct hostfs_rpmsg_fstat_s *msg = data;
|
FAR struct hostfs_rpmsg_fstat_s *msg = data;
|
||||||
int ret = -ENOENT;
|
int ret = -ENOENT;
|
||||||
|
struct stat buf;
|
||||||
|
|
||||||
if (msg->fd >= 0 && msg->fd < CONFIG_NFILE_DESCRIPTORS)
|
if (msg->fd >= 0 && msg->fd < CONFIG_NFILE_DESCRIPTORS)
|
||||||
{
|
{
|
||||||
ret = file_fstat(&priv->files[msg->fd], &msg->buf);
|
ret = file_fstat(&priv->files[msg->fd], &buf);
|
||||||
|
if (ret >= 0)
|
||||||
|
{
|
||||||
|
msg->buf = buf;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
msg->header.result = ret;
|
msg->header.result = ret;
|
||||||
|
@ -493,10 +498,20 @@ static int hostfs_rpmsg_statfs_handler(FAR struct rpmsg_endpoint *ept,
|
||||||
uint32_t src, FAR void *priv)
|
uint32_t src, FAR void *priv)
|
||||||
{
|
{
|
||||||
FAR struct hostfs_rpmsg_statfs_s *msg = data;
|
FAR struct hostfs_rpmsg_statfs_s *msg = data;
|
||||||
|
struct statfs buf;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = statfs(msg->pathname, &msg->buf);
|
ret = statfs(msg->pathname, &buf);
|
||||||
msg->header.result = ret ? -get_errno() : 0;
|
if (ret)
|
||||||
|
{
|
||||||
|
ret = -get_errno();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
msg->buf = buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
msg->header.result = ret;
|
||||||
return rpmsg_send(ept, msg, sizeof(*msg));
|
return rpmsg_send(ept, msg, sizeof(*msg));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -558,10 +573,20 @@ static int hostfs_rpmsg_stat_handler(FAR struct rpmsg_endpoint *ept,
|
||||||
uint32_t src, FAR void *priv)
|
uint32_t src, FAR void *priv)
|
||||||
{
|
{
|
||||||
FAR struct hostfs_rpmsg_stat_s *msg = data;
|
FAR struct hostfs_rpmsg_stat_s *msg = data;
|
||||||
|
struct stat buf;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = stat(msg->pathname, &msg->buf);
|
ret = stat(msg->pathname, &buf);
|
||||||
msg->header.result = ret ? -get_errno() : 0;
|
if (ret)
|
||||||
|
{
|
||||||
|
ret = -get_errno();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
msg->buf = buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
msg->header.result = ret;
|
||||||
return rpmsg_send(ept, msg, sizeof(*msg));
|
return rpmsg_send(ept, msg, sizeof(*msg));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue