All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Krufky <mkrufky@linuxtv.org>
To: David Woodhouse <dwmw2@infradead.org>
Cc: linux-kernel@vger.kernel.org, sam@ravnborg.org,
	alan@lxorguk.ukuu.org.uk, akpm@linux-foundation.org,
	Patrick Boettcher <patrick.boettcher@desy.de>,
	Chris Pascoe <c.pascoe@itee.uq.edu.au>
Subject: Re: [PATCHv2 22/28] cxusb: treat firmware data as const
Date: Sun, 25 May 2008 10:14:14 -0400	[thread overview]
Message-ID: <48397436.8040102@linuxtv.org> (raw)
In-Reply-To: <E1K0DOK-0007EC-6q@shinybook.infradead.org>

David,

It's broken...  Please see fix, below:

David Woodhouse wrote:
> ...which means allocating our own copy when we want to modify it.
>
> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
> ---
>  drivers/media/dvb/dvb-usb/cxusb.c |   21 ++++++++++++++++++---
>  1 files changed, 18 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/media/dvb/dvb-usb/cxusb.c b/drivers/media/dvb/dvb-usb/cxusb.c
> index 720fcd1..94bb482 100644
> --- a/drivers/media/dvb/dvb-usb/cxusb.c
> +++ b/drivers/media/dvb/dvb-usb/cxusb.c
> @@ -24,6 +24,7 @@
>   * see Documentation/dvb/README.dvb-usb for more information
>   */
>  #include <media/tuner.h>
> +#include <linux/vmalloc.h>
>  
>  #include "cxusb.h"
>  
> @@ -700,12 +701,26 @@ static int bluebird_patch_dvico_firmware_download(struct usb_device *udev,
>  
>  		if (fw->data[idoff] == (USB_VID_DVICO & 0xff) &&
>  		    fw->data[idoff + 1] == USB_VID_DVICO >> 8) {
> -			fw->data[idoff + 2] =
> +			struct firmware new_fw;
> +			u8 *new_fw_data = vmalloc(fw->size);
> +			int ret;
> +
> +			if (!new_fw_data)
> +				return -ENOMEM;
> +
> +			memcpy(new_fw_data, fw->data, fw->size);
> +			new_fw.size = fw->size;
> +			new_fw.data = fw->data;
> +
> +			new_fw_data[idoff + 2] =
>  				le16_to_cpu(udev->descriptor.idProduct) + 1;
> -			fw->data[idoff + 3] =
> +			new_fw_data[idoff + 3] =
>  				le16_to_cpu(udev->descriptor.idProduct) >> 8;
>  
> -			return usb_cypress_load_firmware(udev, fw, CYPRESS_FX2);
> +			ret = usb_cypress_load_firmware(udev, &new_fw,
> +							CYPRESS_FX2);
> +			vfree(new_fw_data);
> +			return ret;
>  		}
>  	}
>  
>   
The unmodified firmware was being uploaded to the device, instead of the patched firmware :-(

After making this additional one-line change, the patch works fine.

Please feel free to fold this into your own patch.

Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>

---
 linux/drivers/media/dvb/dvb-usb/cxusb.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/media/dvb/dvb-usb/cxusb.c
+++ b/drivers/media/dvb/dvb-usb/cxusb.c
@@ -710,7 +710,7 @@
 
 			memcpy(new_fw_data, fw->data, fw->size);
 			new_fw.size = fw->size;
-			new_fw.data = fw->data;
+			new_fw.data = new_fw_data;
 
 			new_fw_data[idoff + 2] =
 				le16_to_cpu(udev->descriptor.idProduct) + 1;







  reply	other threads:[~2008-05-25 14:14 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-25 10:23 [PATCHv2 00/28] Allow built-in firmware to be accessed by request_firmware() David Woodhouse
2008-05-25 10:23 ` [PATCHv2 01/28] libertas: treat firmware data as const David Woodhouse
2008-05-25 13:06   ` Alan Cox
2008-05-25 10:23 ` [PATCHv2 02/28] bluetooth: " David Woodhouse
2008-05-25 13:07   ` Alan Cox
2008-05-25 10:23 ` [PATCHv2 03/28] cyclades: " David Woodhouse
2008-05-25 13:07   ` Alan Cox
2008-05-25 10:23 ` [PATCHv2 04/28] cx25840: " David Woodhouse
2008-05-25 10:51   ` Hans Verkuil
2008-05-25 14:36     ` David Woodhouse
2008-05-25 14:56     ` David Woodhouse
2008-05-25 15:04       ` Hans Verkuil
2008-05-25 15:37       ` Mike Isely
2008-05-25 15:20     ` Mike Isely
2008-05-25 16:16       ` Tyler Trafford
2008-05-25 10:23 ` [PATCHv2 05/28] myri10ge: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 06/28] vx222: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 07/28] riptide: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 08/28] pcxhr: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 09/28] vx: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 10/28] ueagle-atm: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 11/28] cxacru: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 12/28] aic94xx: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 13/28] zd1201: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 14/28] rt2x00: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 15/28] p54: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 16/28] atmel: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 17/28] irda-usb: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 18/28] cxgb3: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 19/28] bt8xx: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 20/28] ttusb-dec: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 21/28] dvb frontends: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 22/28] cxusb: " David Woodhouse
2008-05-25 14:14   ` Michael Krufky [this message]
2008-05-25 14:27     ` David Woodhouse
2008-05-25 15:02     ` David Woodhouse
2008-05-25 10:23 ` [PATCHv2 23/28] gp8psk: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 24/28] tuners: " David Woodhouse
2008-05-25 10:23 ` [PATCHv2 25/28] firmware: make fw->data const David Woodhouse
2008-05-25 10:23 ` [PATCHv2 26/28] firmware: allow firmware files to be built into kernel image David Woodhouse
2008-05-30  5:08   ` Rusty Russell
2008-05-31  8:39     ` David Woodhouse
2008-05-25 10:23 ` [PATCHv2 27/28] firmware: Add CONFIG_BUILTIN_FIRMWARE option David Woodhouse
2008-05-25 17:00   ` [PATCHv3 " David Woodhouse
2008-05-26  8:58     ` David Woodhouse
2008-05-28 11:46       ` [PATCHv4 " David Woodhouse
2008-05-29  8:29         ` [PATCH 29/28] firmware: Add 'firmware_install' make target David Woodhouse
2008-05-25 10:23 ` [PATCHv2 28/28] firmware: convert korg1212 driver to use firmware loader exclusively David Woodhouse
2008-05-25 13:11   ` Alan Cox
2008-05-27 18:33     ` Yinghai Lu
2008-05-27 21:24       ` David Woodhouse
2008-05-29  9:09 ` [PATCHv2 #ERROR!/28] maestro3: treat firmware data as const David Woodhouse
2008-05-29 10:49   ` [PATCHv2 30/28] firmware: convert maestro3 driver to use firmware loader exclusively David Woodhouse
2008-05-29 12:21 ` [PATCH N/28] ymfpci: treat firmware data as const David Woodhouse
2008-05-29 12:23   ` [PATCH N/28] firmware: convert ymfpci driver to use firmware loader exclusively David Woodhouse
2008-05-29 13:47 ` [PATCH] smctr: use request_firmware() David Woodhouse
2008-05-29 19:30   ` maximilian attems
2008-05-29 21:02     ` David Woodhouse
2008-05-29 14:20 ` [PATCH] kaweth: " David Woodhouse
2008-05-30 13:55   ` Oliver Neukum
2008-05-30 15:16     ` David Woodhouse
2008-05-30 15:26       ` Marcel Holtmann
2008-05-30 15:48         ` Alan Cox
2008-05-30 21:02           ` Oliver Neukum
2008-05-31  0:00             ` Alexandre Oliva
2008-05-31  6:51           ` Marcel Holtmann
2008-05-31 12:35             ` Alan Cox
2008-05-29 17:49 ` [PATCH] ttusb-budget: " David Woodhouse
2008-06-13 19:23   ` Mauro Carvalho Chehab
2008-05-30 11:45 ` [PATCH] keyspan: " David Woodhouse
2008-05-30 13:54   ` Hugh Blemings
2008-05-30 12:19 ` [PATCH] keyspan_pda: " David Woodhouse

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48397436.8040102@linuxtv.org \
    --to=mkrufky@linuxtv.org \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=c.pascoe@itee.uq.edu.au \
    --cc=dwmw2@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=patrick.boettcher@desy.de \
    --cc=sam@ravnborg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.