On 15.02.2016 18:55, Cyrill Gorcunov wrote:
> On Mon, Feb 15, 2016 at 06:05:40PM +0300, Kirill Tkhai wrote:
>> This adds ioctl, which allows to set ring buffer tail
>> and to wait till aio requests are finished.
>>
>> Signed-off-by: Kirill Tkhai <[email protected]>
> ...
>> +int ve_aio_ioctl(struct task_struct *task, unsigned int cmd, unsigned long 
>> arg)
>> +{
>> +    struct ve_ioc_arg karg;
>> +    struct kioctx *ioctx;
>> +    int ret;
>> +
>> +    if (task != current)
>> +            return -EINVAL;
>> +
>> +    if (copy_from_user(&karg, (void *)arg, sizeof(karg)))
>> +            return -EFAULT;
>> +
>> +    ioctx = lookup_ioctx(karg.ctx_id);
>> +    if (!ioctx)
>> +            return -EINVAL;;
>> +
> 
> Kirill, here is a moment I dont understand -- anyone can set aio tail?
> Should not we test for ve-is-super (pseudosuper) here?

Tail is only a position, where a result of a next completed result is put.
If userspace makes something wrong, it just (possible) rewrites results
of previous requests. Do you think it's a problem?

I'm going to execute this from parasite code. Is it possible to upgrade
dumped process permittions to do that and then return it back?

Thanks
 
>> +    switch (cmd) {
>> +            case VE_AIO_IOC_SET_TAIL:
>> +                    ret = ve_aio_set_tail(ioctx, karg.val);
>> +                    break;
>> +            case VE_AIO_IOC_WAIT_ACTIVE:
>> +                    ret = ve_aio_wait_inflight_reqs(ioctx);
>> +                    break;
>> +            default:
>> +                    ret = -EINVAL;
>> +    }
> 
> The rest looks good for me.
> 
_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to