Advertisement
Guest User

Untitled

a guest
Mar 1st, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. static int prepare_ipc_shm_pages(struct cr_img *img, const IpcShmEntry *shm)
  2. {
  3. - int ret;
  4. void *data;
  5. + int ifd;
  6. + ssize_t size, off;
  7.  
  8. data = shmat(shm->desc->id, NULL, 0);
  9. if (data == (void *)-1) {
  10. pr_perror("Failed to attach IPC shared memory");
  11. return -errno;
  12. }
  13. - ret = read_img_buf(img, data, round_up(shm->size, sizeof(u32)));
  14. - if (ret < 0) {
  15. - pr_err("Failed to read IPC shared memory data\n");
  16. - return ret;
  17. - }
  18. +
  19. + ifd = img_raw_fd(img);
  20. + size = round_up(shm->size, sizeof(u32));
  21. + off = 0;
  22. + do {
  23. + ssize_t ret;
  24. +
  25. + ret = read(ifd, data + off, size - off);
  26. + if (ret <= 0) {
  27. + pr_perror("Failed to write IPC shared memory data");
  28. + return (int)ret;
  29. + }
  30. +
  31. + off += ret;
  32. + } while (off < size);
  33. if (shmdt(data)) {
  34. pr_perror("Failed to detach IPC shared memory");
  35. return -errno;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement