diff options
Diffstat (limited to 'drivers/media/usb/gspca/sq930x.c')
| -rw-r--r-- | drivers/media/usb/gspca/sq930x.c | 54 |
1 files changed, 24 insertions, 30 deletions
diff --git a/drivers/media/usb/gspca/sq930x.c b/drivers/media/usb/gspca/sq930x.c index b10d0821111c..c3610247a90e 100644 --- a/drivers/media/usb/gspca/sq930x.c +++ b/drivers/media/usb/gspca/sq930x.c @@ -1,23 +1,10 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * SQ930x subdriver * * Copyright (C) 2010 Jean-François Moine <http://moinejf.free.fr> * Copyright (C) 2006 -2008 Gerard Klaver <gerard at gkall dot hobby dot nl> * Copyright (C) 2007 Sam Revitch <samr7@cs.washington.edu> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -438,6 +425,11 @@ static void reg_r(struct gspca_dev *gspca_dev, if (ret < 0) { pr_err("reg_r %04x failed %d\n", value, ret); gspca_dev->usb_err = ret; + /* + * Make sure the buffer is zeroed to avoid uninitialized + * values. + */ + memset(gspca_dev->usb_buf, 0, USB_BUF_SZ); } } @@ -447,7 +439,7 @@ static void reg_w(struct gspca_dev *gspca_dev, u16 value, u16 index) if (gspca_dev->usb_err < 0) return; - PDEBUG(D_USBO, "reg_w v: %04x i: %04x", value, index); + gspca_dbg(gspca_dev, D_USBO, "reg_w v: %04x i: %04x\n", value, index); ret = usb_control_msg(gspca_dev->dev, usb_sndctrlpipe(gspca_dev->dev, 0), 0x0c, /* request */ @@ -468,8 +460,8 @@ static void reg_wb(struct gspca_dev *gspca_dev, u16 value, u16 index, if (gspca_dev->usb_err < 0) return; - PDEBUG(D_USBO, "reg_wb v: %04x i: %04x %02x...%02x", - value, index, *data, data[len - 1]); + gspca_dbg(gspca_dev, D_USBO, "reg_wb v: %04x i: %04x %02x...%02x\n", + value, index, *data, data[len - 1]); memcpy(gspca_dev->usb_buf, data, len); ret = usb_control_msg(gspca_dev->dev, usb_sndctrlpipe(gspca_dev->dev, 0), @@ -514,8 +506,8 @@ static void i2c_write(struct sd *sd, *buf++ = cmd->val; } - PDEBUG(D_USBO, "i2c_w v: %04x i: %04x %02x...%02x", - val, idx, gspca_dev->usb_buf[0], buf[-1]); + gspca_dbg(gspca_dev, D_USBO, "i2c_w v: %04x i: %04x %02x...%02x\n", + val, idx, gspca_dev->usb_buf[0], buf[-1]); ret = usb_control_msg(gspca_dev->dev, usb_sndctrlpipe(gspca_dev->dev, 0), 0x0c, /* request */ @@ -542,7 +534,7 @@ static void ucbus_write(struct gspca_dev *gspca_dev, return; if ((batchsize - 1) * 3 > USB_BUF_SZ) { - PERR("Bug: usb_buf overflow\n"); + gspca_err(gspca_dev, "Bug: usb_buf overflow\n"); gspca_dev->usb_err = -ENOMEM; return; } @@ -564,12 +556,12 @@ static void ucbus_write(struct gspca_dev *gspca_dev, *buf++ = cmd->bw_data; } if (buf != gspca_dev->usb_buf) - PDEBUG(D_USBO, "ucbus v: %04x i: %04x %02x...%02x", - val, idx, - gspca_dev->usb_buf[0], buf[-1]); + gspca_dbg(gspca_dev, D_USBO, "ucbus v: %04x i: %04x %02x...%02x\n", + val, idx, + gspca_dev->usb_buf[0], buf[-1]); else - PDEBUG(D_USBO, "ucbus v: %04x i: %04x", - val, idx); + gspca_dbg(gspca_dev, D_USBO, "ucbus v: %04x i: %04x\n", + val, idx); ret = usb_control_msg(gspca_dev->dev, usb_sndctrlpipe(gspca_dev->dev, 0), 0x0c, /* request */ @@ -695,7 +687,7 @@ static void mt9v111_init(struct gspca_dev *gspca_dev) || gspca_dev->usb_err != 0) break; if (--nwait < 0) { - PDEBUG(D_PROBE, "mt9v111_init timeout"); + gspca_dbg(gspca_dev, D_PROBE, "mt9v111_init timeout\n"); gspca_dev->usb_err = -ETIME; return; } @@ -861,7 +853,7 @@ static int sd_init(struct gspca_dev *gspca_dev) * 6: c8 / c9 / ca / cf = mode webcam?, sensor? webcam? * 7: 00 */ - PDEBUG(D_PROBE, "info: %*ph", 8, gspca_dev->usb_buf); + gspca_dbg(gspca_dev, D_PROBE, "info: %*ph\n", 8, gspca_dev->usb_buf); bridge_init(sd); @@ -874,7 +866,8 @@ static int sd_init(struct gspca_dev *gspca_dev) cmos_probe(gspca_dev); } if (gspca_dev->usb_err >= 0) { - PDEBUG(D_PROBE, "Sensor %s", sensor_tb[sd->sensor].name); + gspca_dbg(gspca_dev, D_PROBE, "Sensor %s\n", + sensor_tb[sd->sensor].name); global_init(sd, 1); } return gspca_dev->usb_err; @@ -906,7 +899,8 @@ static int sd_isoc_init(struct gspca_dev *gspca_dev) gspca_dev->cam.bulk_nurbs = 1; /* there must be one URB only */ sd->do_ctrl = 0; - gspca_dev->cam.bulk_size = gspca_dev->width * gspca_dev->height + 8; + gspca_dev->cam.bulk_size = gspca_dev->pixfmt.width * + gspca_dev->pixfmt.height + 8; return 0; } @@ -1046,7 +1040,7 @@ static void sd_dq_callback(struct gspca_dev *gspca_dev) v4l2_ctrl_g_ctrl(sd->gain)); gspca_dev->cam.bulk_nurbs = 1; - ret = usb_submit_urb(gspca_dev->urb[0], GFP_ATOMIC); + ret = usb_submit_urb(gspca_dev->urb[0], GFP_KERNEL); if (ret < 0) pr_err("sd_dq_callback() err %d\n", ret); |
