Advertisement
HimikoWerckmeister

Untitled

Apr 2nd, 2016
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. asmlinkage long sys_array_stats(struct array_stats *arraystats, long data[],long size)
  2. {
  3. int i=0;
  4. int j=0;
  5. long *sLocalEntry=(long*)kmalloc(size*sizeof(long),GFP_KERNEL);
  6. struct array_stats *sLocalStat=(array_stats*)kmalloc(size*sizeof(arraystats),GFP_KERNAL);
  7. long sLocalMax=0;
  8. long sLocalMin=0;
  9. int copyret=0;
  10. int copyret1=0;
  11. int copyret2=0;
  12. long sum=0;
  13. if(size<=0)
  14. {
  15. return -EINVAL;
  16. }
  17. //copyret1=copy_from_user(sLocalMax,data[0],sizeof(long));
  18. //copyret2=copy_from_user(sLocalMin,data[0],sizeof(long));
  19. if(copyret<0&&copyret2<0)
  20. {
  21. return -EFAULT;
  22. }
  23. for(i=0;i<size;i+=1024)
  24. {
  25. copyret=copy_from_user(sLocalEntry,data[i],1024);
  26. if(copyret<0)
  27. {
  28. return -EFAULT;
  29. }
  30. for(j=0;j<1024;j++)
  31. {
  32. if(i==0 && j==0)
  33. {
  34. sLocalMax=sLocalEntry[0];
  35. sLocalMin=sLocalEntry[0];
  36. }
  37. if(sLocalEntry[i]>sLocalMax)
  38. {
  39. sLocalMax=sLocalEntry[i];
  40. }
  41. if(sLocalEntry[i]<sLocalMin)
  42. {
  43. sLocalMin=sLocalEntry[i];
  44. }
  45. sum+=sLocalEntry[j];
  46. }
  47.  
  48. }
  49. sLocalStat->min=sLocalMin;
  50. sLocalStat->max=sLocalMax;
  51. sLocalStat->sum=sum;
  52. copyret1=copy_from_user(arraystats,sLocalStat,sizeof(array_stats));
  53. if(copyret1<0)
  54. {
  55. return -EFAULT;
  56. }
  57.  
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement