Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static int prepare_ipc_shm_pages(struct cr_img *img, const IpcShmEntry *shm)
- {
- - int ret;
- void *data;
- + int ifd;
- + ssize_t size, off;
- data = shmat(shm->desc->id, NULL, 0);
- if (data == (void *)-1) {
- pr_perror("Failed to attach IPC shared memory");
- return -errno;
- }
- - ret = read_img_buf(img, data, round_up(shm->size, sizeof(u32)));
- - if (ret < 0) {
- - pr_err("Failed to read IPC shared memory data\n");
- - return ret;
- - }
- +
- + ifd = img_raw_fd(img);
- + size = round_up(shm->size, sizeof(u32));
- + off = 0;
- + do {
- + ssize_t ret;
- +
- + ret = read(ifd, data + off, size - off);
- + if (ret <= 0) {
- + pr_perror("Failed to write IPC shared memory data");
- + return (int)ret;
- + }
- +
- + off += ret;
- + } while (off < size);
- if (shmdt(data)) {
- pr_perror("Failed to detach IPC shared memory");
- return -errno;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement