On Mon, Mar 01, 2021 at 02:41:35PM +0800, Jie Deng wrote:Do you mean using "kzalloc" in the if condition and "kmemdup" in the else condition ?
Add an I2C bus driver for virtio para-virtualization....
The controller can be emulated by the backend driver in
any device model software by following the virtio protocol.
The device specification can be found on
https://lists.oasis-open.org/archives/virtio-comment/202101/msg00008.html.
By following the specification, people may implement different
backend drivers to emulate different controllers according to
their needs.
+ buf = kzalloc(msgs[i].len, GFP_KERNEL);kzalloc()
+ if (!buf)
+ break;
+
+ if (msgs[i].flags & I2C_M_RD) {
+ reqs[i].read_buf = buf;kmemdup() ?
+ sg_init_one(&msg_buf, reqs[i].read_buf, msgs[i].len);
+ sgs[outcnt + incnt++] = &msg_buf;
+ } else {
+ reqs[i].write_buf = buf;
+ memcpy(reqs[i].write_buf, msgs[i].buf, msgs[i].len);
Will fix it. Thank you.+ sg_init_one(&msg_buf, reqs[i].write_buf, msgs[i].len);...
+ sgs[outcnt++] = &msg_buf;
+ }
+One blank line is enough.
+
...Good catch !
+ ret = virtio_i2c_send_reqs(vq, reqs, msgs, num);Redundant.
+ if (ret == 0)
+ goto err_unlock_free;
+ else
+ nr = ret;