]> www.infradead.org Git - users/hch/misc.git/commitdiff
rtc: optee: remove unnecessary memory operations
authorClément Le Goffic <clement.legoffic@foss.st.com>
Tue, 15 Jul 2025 14:07:14 +0000 (16:07 +0200)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Tue, 16 Sep 2025 15:38:21 +0000 (17:38 +0200)
Remove memcpy by using directly the shared memory.
Remove memset be initialize variable to 0 on stack.

Signed-off-by: Clément Le Goffic <clement.legoffic@foss.st.com>
Link: https://lore.kernel.org/r/20250715-upstream-optee-rtc-v1-2-e0fdf8aae545@foss.st.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/rtc/rtc-optee.c

index 6b77c122fdc1093c4633c141d84e3bd9987e6458..b65953eb7ca1f73122ab995853f13f1d93d12aee 100644 (file)
@@ -97,18 +97,9 @@ static int optee_rtc_settime(struct device *dev, struct rtc_time *tm)
        struct optee_rtc *priv = dev_get_drvdata(dev);
        struct tee_ioctl_invoke_arg inv_arg = {0};
        struct tee_param param[4] = {0};
-       struct optee_rtc_time optee_tm;
-       void *rtc_data;
+       struct optee_rtc_time *optee_tm;
        int ret;
 
-       optee_tm.tm_sec = tm->tm_sec;
-       optee_tm.tm_min = tm->tm_min;
-       optee_tm.tm_hour = tm->tm_hour;
-       optee_tm.tm_mday = tm->tm_mday;
-       optee_tm.tm_mon = tm->tm_mon;
-       optee_tm.tm_year = tm->tm_year + 1900;
-       optee_tm.tm_wday = tm->tm_wday;
-
        inv_arg.func = TA_CMD_RTC_SET_TIME;
        inv_arg.session = priv->session_id;
        inv_arg.num_params = 4;
@@ -117,11 +108,17 @@ static int optee_rtc_settime(struct device *dev, struct rtc_time *tm)
        param[0].u.memref.shm = priv->shm;
        param[0].u.memref.size = sizeof(struct optee_rtc_time);
 
-       rtc_data = tee_shm_get_va(priv->shm, 0);
-       if (IS_ERR(rtc_data))
-               return PTR_ERR(rtc_data);
+       optee_tm = tee_shm_get_va(priv->shm, 0);
+       if (IS_ERR(optee_tm))
+               return PTR_ERR(optee_tm);
 
-       memcpy(rtc_data, &optee_tm, sizeof(struct optee_rtc_time));
+       optee_tm->tm_min = tm->tm_min;
+       optee_tm->tm_sec = tm->tm_sec;
+       optee_tm->tm_hour = tm->tm_hour;
+       optee_tm->tm_mday = tm->tm_mday;
+       optee_tm->tm_mon = tm->tm_mon;
+       optee_tm->tm_year = tm->tm_year + 1900;
+       optee_tm->tm_wday = tm->tm_wday;
 
        ret = tee_client_invoke_func(priv->ctx, &inv_arg, param);
        if (ret < 0 || inv_arg.ret != 0)
@@ -241,14 +238,12 @@ static int optee_ctx_match(struct tee_ioctl_version_data *ver, const void *data)
 static int optee_rtc_probe(struct device *dev)
 {
        struct tee_client_device *rtc_device = to_tee_client_device(dev);
-       struct tee_ioctl_open_session_arg sess_arg;
+       struct tee_ioctl_open_session_arg sess_arg = {0};
        struct optee_rtc *priv;
        struct rtc_device *rtc;
        struct tee_shm *shm;
        int ret, err;
 
-       memset(&sess_arg, 0, sizeof(sess_arg));
-
        priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
        if (!priv)
                return -ENOMEM;