rcnt = info->read((char *)buf, zone->buffer_size + sizeof(*buf),
                                zone->off);
                if (rcnt != zone->buffer_size + sizeof(*buf))
-                       return (int)rcnt < 0 ? (int)rcnt : -EIO;
+                       return rcnt < 0 ? rcnt : -EIO;
        }
        return 0;
 }
 {
        struct pstore_zone_info *info = cxt->pstore_zone_info;
        struct pstore_zone *zone;
-       size_t rcnt, len;
+       ssize_t rcnt, len;
        struct psz_buffer *buf;
        struct psz_kmsg_header *hdr;
        struct timespec64 time = { };
                        continue;
                } else if (rcnt != len) {
                        pr_err("read %s with id %lu failed\n", zone->name, i);
-                       return (int)rcnt < 0 ? (int)rcnt : -EIO;
+                       return rcnt < 0 ? rcnt : -EIO;
                }
 
                if (buf->sig != zone->buffer->sig) {
        rcnt = info->read((char *)&tmpbuf, len, zone->off);
        if (rcnt != len) {
                pr_debug("read zone %s failed\n", zone->name);
-               return (int)rcnt < 0 ? (int)rcnt : -EIO;
+               return rcnt < 0 ? rcnt : -EIO;
        }
 
        if (tmpbuf.sig != zone->buffer->sig) {
        rcnt = info->read(buf, len - start, off + start);
        if (rcnt != len - start) {
                pr_err("read zone %s failed\n", zone->name);
-               ret = (int)rcnt < 0 ? (int)rcnt : -EIO;
+               ret = rcnt < 0 ? rcnt : -EIO;
                goto free_oldbuf;
        }
 
        rcnt = info->read(buf + len - start, start, off);
        if (rcnt != start) {
                pr_err("read zone %s failed\n", zone->name);
-               ret = (int)rcnt < 0 ? (int)rcnt : -EIO;
+               ret = rcnt < 0 ? rcnt : -EIO;
                goto free_oldbuf;
        }