Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- asmlinkage long sys_array_stats(struct array_stats *arraystats, long data[],long size)
- {
- int i=0;
- int j=0;
- long *sLocalEntry=(long*)kmalloc(size*sizeof(long),GFP_KERNEL);
- struct array_stats *sLocalStat=(array_stats*)kmalloc(size*sizeof(arraystats),GFP_KERNAL);
- long sLocalMax=0;
- long sLocalMin=0;
- int copyret=0;
- int copyret1=0;
- int copyret2=0;
- long sum=0;
- if(size<=0)
- {
- return -EINVAL;
- }
- //copyret1=copy_from_user(sLocalMax,data[0],sizeof(long));
- //copyret2=copy_from_user(sLocalMin,data[0],sizeof(long));
- if(copyret<0&©ret2<0)
- {
- return -EFAULT;
- }
- for(i=0;i<size;i+=1024)
- {
- copyret=copy_from_user(sLocalEntry,data[i],1024);
- if(copyret<0)
- {
- return -EFAULT;
- }
- for(j=0;j<1024;j++)
- {
- if(i==0 && j==0)
- {
- sLocalMax=sLocalEntry[0];
- sLocalMin=sLocalEntry[0];
- }
- if(sLocalEntry[i]>sLocalMax)
- {
- sLocalMax=sLocalEntry[i];
- }
- if(sLocalEntry[i]<sLocalMin)
- {
- sLocalMin=sLocalEntry[i];
- }
- sum+=sLocalEntry[j];
- }
- }
- sLocalStat->min=sLocalMin;
- sLocalStat->max=sLocalMax;
- sLocalStat->sum=sum;
- copyret1=copy_from_user(arraystats,sLocalStat,sizeof(array_stats));
- if(copyret1<0)
- {
- return -EFAULT;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement