Displaying 9 results from an estimated 9 matches for "vmsg_i".
2020 Sep 03
9
[PATCH] i2c: virtio: add a virtio i2c frontend driver
...t;status));
+ sgs[outcnt + incnt++] = &status;
+
+ return virtqueue_add_sgs(vq, sgs, outcnt, incnt, vmsg, GFP_KERNEL);
+}
+
+static int virtio_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
+{
+ struct virtio_i2c *vi = i2c_get_adapdata(adap);
+ struct virtio_i2c_msg *vmsg_o, *vmsg_i;
+ struct virtqueue *vq = vi->vq;
+ unsigned long time_left;
+ int len, i, ret = 0;
+
+ vmsg_o = kzalloc(sizeof(*vmsg_o), GFP_KERNEL);
+ if (!vmsg_o)
+ return -ENOMEM;
+
+ mutex_lock(&vi->i2c_lock);
+ vmsg_o->buf = NULL;
+ for (i = 0; i < num; i++) {
+ ret = virtio_i2c_add_msg(vq,...
2020 Sep 03
9
[PATCH] i2c: virtio: add a virtio i2c frontend driver
...t;status));
+ sgs[outcnt + incnt++] = &status;
+
+ return virtqueue_add_sgs(vq, sgs, outcnt, incnt, vmsg, GFP_KERNEL);
+}
+
+static int virtio_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
+{
+ struct virtio_i2c *vi = i2c_get_adapdata(adap);
+ struct virtio_i2c_msg *vmsg_o, *vmsg_i;
+ struct virtqueue *vq = vi->vq;
+ unsigned long time_left;
+ int len, i, ret = 0;
+
+ vmsg_o = kzalloc(sizeof(*vmsg_o), GFP_KERNEL);
+ if (!vmsg_o)
+ return -ENOMEM;
+
+ mutex_lock(&vi->i2c_lock);
+ vmsg_o->buf = NULL;
+ for (i = 0; i < num; i++) {
+ ret = virtio_i2c_add_msg(vq,...
2020 Sep 03
0
[PATCH] i2c: virtio: add a virtio i2c frontend driver
..._packed;
As Misha noticed and somewhere I saw 0-day reports these should be carefully
taken care of.
...
> +static int virtio_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
> +{
> + struct virtio_i2c *vi = i2c_get_adapdata(adap);
> + struct virtio_i2c_msg *vmsg_o, *vmsg_i;
> + struct virtqueue *vq = vi->vq;
> + unsigned long time_left;
> + int len, i, ret = 0;
> +
> + vmsg_o = kzalloc(sizeof(*vmsg_o), GFP_KERNEL);
> + if (!vmsg_o)
> + return -ENOMEM;
> +
> + mutex_lock(&vi->i2c_lock);
> + vmsg_o->buf = NULL;
> + for (i...
2020 Sep 03
0
[PATCH] i2c: virtio: add a virtio i2c frontend driver
...mp;status;
> +
> + return virtqueue_add_sgs(vq, sgs, outcnt, incnt, vmsg, GFP_KERNEL);
> +}
> +
> +static int virtio_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
> +{
> + struct virtio_i2c *vi = i2c_get_adapdata(adap);
> + struct virtio_i2c_msg *vmsg_o, *vmsg_i;
> + struct virtqueue *vq = vi->vq;
> + unsigned long time_left;
> + int len, i, ret = 0;
> +
> + vmsg_o = kzalloc(sizeof(*vmsg_o), GFP_KERNEL);
> + if (!vmsg_o)
> + return -ENOMEM;
> +
> + mutex_lock(&vi->i2c_lock);
> + vmsg_o->buf = NULL;
> + for (i...
2020 Sep 03
0
[PATCH] i2c: virtio: add a virtio i2c frontend driver
...mp;status;
> +
> + return virtqueue_add_sgs(vq, sgs, outcnt, incnt, vmsg, GFP_KERNEL);
> +}
> +
> +static int virtio_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
> +{
> + struct virtio_i2c *vi = i2c_get_adapdata(adap);
> + struct virtio_i2c_msg *vmsg_o, *vmsg_i;
> + struct virtqueue *vq = vi->vq;
> + unsigned long time_left;
> + int len, i, ret = 0;
> +
> + vmsg_o = kzalloc(sizeof(*vmsg_o), GFP_KERNEL);
> + if (!vmsg_o)
> + return -ENOMEM;
> +
> + mutex_lock(&vi->i2c_lock);
> + vmsg_o->buf = NULL;
> + for (i...
2020 Sep 04
0
[PATCH] i2c: virtio: add a virtio i2c frontend driver
...mp;status;
> +
> + return virtqueue_add_sgs(vq, sgs, outcnt, incnt, vmsg, GFP_KERNEL);
> +}
> +
> +static int virtio_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
> +{
> + struct virtio_i2c *vi = i2c_get_adapdata(adap);
> + struct virtio_i2c_msg *vmsg_o, *vmsg_i;
> + struct virtqueue *vq = vi->vq;
> + unsigned long time_left;
> + int len, i, ret = 0;
> +
> + vmsg_o = kzalloc(sizeof(*vmsg_o), GFP_KERNEL);
> + if (!vmsg_o)
> + return -ENOMEM;
It looks to me we can avoid the allocation by embedding virtio_i2c_msg
into struct virtio...
2020 Sep 04
2
[PATCH] i2c: virtio: add a virtio i2c frontend driver
...e_add_sgs(vq, sgs, outcnt, incnt, vmsg, GFP_KERNEL);
>> +}
>> +
>> +static int virtio_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg
>> *msgs, int num)
>> +{
>> +??? struct virtio_i2c *vi = i2c_get_adapdata(adap);
>> +??? struct virtio_i2c_msg *vmsg_o, *vmsg_i;
>> +??? struct virtqueue *vq = vi->vq;
>> +??? unsigned long time_left;
>> +??? int len, i, ret = 0;
>> +
>> +??? vmsg_o = kzalloc(sizeof(*vmsg_o), GFP_KERNEL);
>> +??? if (!vmsg_o)
>> +??????? return -ENOMEM;
>
>
> It looks to me we can avoid...
2020 Sep 04
2
[PATCH] i2c: virtio: add a virtio i2c frontend driver
...e_add_sgs(vq, sgs, outcnt, incnt, vmsg, GFP_KERNEL);
>> +}
>> +
>> +static int virtio_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg
>> *msgs, int num)
>> +{
>> +??? struct virtio_i2c *vi = i2c_get_adapdata(adap);
>> +??? struct virtio_i2c_msg *vmsg_o, *vmsg_i;
>> +??? struct virtqueue *vq = vi->vq;
>> +??? unsigned long time_left;
>> +??? int len, i, ret = 0;
>> +
>> +??? vmsg_o = kzalloc(sizeof(*vmsg_o), GFP_KERNEL);
>> +??? if (!vmsg_o)
>> +??????? return -ENOMEM;
>
>
> It looks to me we can avoid...
2020 Sep 07
0
[PATCH] i2c: virtio: add a virtio i2c frontend driver
...gt;>> GFP_KERNEL);
>>> +}
>>> +
>>> +static int virtio_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg
>>> *msgs, int num)
>>> +{
>>> +??? struct virtio_i2c *vi = i2c_get_adapdata(adap);
>>> +??? struct virtio_i2c_msg *vmsg_o, *vmsg_i;
>>> +??? struct virtqueue *vq = vi->vq;
>>> +??? unsigned long time_left;
>>> +??? int len, i, ret = 0;
>>> +
>>> +??? vmsg_o = kzalloc(sizeof(*vmsg_o), GFP_KERNEL);
>>> +??? if (!vmsg_o)
>>> +??????? return -ENOMEM;
>>
>&g...