All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Jerone Young <jyoung5@us.ibm.com>
Cc: kvm-devel@lists.sourceforge.net, kvm-ppc-devel@lists.sourceforge.net
Subject: Re: [kvm-ppc-devel] [kvm-devel] [PATCH 5 of 7] Add dynamic device
Date: Wed, 19 Mar 2008 19:30:22 +0000	[thread overview]
Message-ID: <47E169CE.5090405@codemonkey.ws> (raw)
In-Reply-To: <8e9da5ddf159eb6cf5a2.1205953278@thinkpad.austin.ibm.com>

Jerone Young wrote:
> # HG changeset patch
> # User Jerone Young <jyoung5@us.ibm.com>
> # Date 1205953012 18000
> # Branch merge
> # Node ID 8e9da5ddf159eb6cf5a292ccbf5f735103b493ef
> # Parent  03925441312877b8350e4af68e475d5d746304d4
> Add dynamic device tree manipulation & change uboot loader for PPC bamboo board model
>
> This patch adds code to dynamically manipulate the device tree when loaded into memory. This allows us to finally have the ability to manipulate the kernel command line & initrd from the qemu command line. This will also let us setup different settings for the board.
>
> This patch also now uses new uboot loader load_uimage() to load kernel image.
>
> Signed-off-by: Jerone Young <jyoung5@us.ibm.com>
>
> diff --git a/qemu/Makefile.target b/qemu/Makefile.target
> --- a/qemu/Makefile.target
> +++ b/qemu/Makefile.target
> @@ -617,7 +617,7 @@ OBJS+= unin_pci.o ppc_chrp.o
>  OBJS+= unin_pci.o ppc_chrp.o
>  # PowerPC 4xx boards
>  OBJS+= pflash_cfi02.o ppc4xx_devs.o ppc405_uc.o ppc405_boards.o
> -OBJS+= ppc440.o ppc440_bamboo.o
> +OBJS+= ppc440.o ppc440_bamboo.o device_tree.o
>  endif
>  ifeq ($(TARGET_BASE_ARCH), mips)
>  OBJS+= mips_r4k.o mips_malta.o mips_pica61.o mips_mipssim.o
> diff --git a/qemu/hw/device_tree.c b/qemu/hw/device_tree.c
> new file mode 100644
> --- /dev/null
> +++ b/qemu/hw/device_tree.c
> @@ -0,0 +1,181 @@
> +/*
> + * Functions to help device tree manipulation using libfdt.
> + * It also provides functions to read entries from device tree proc
> + * interface.
> + *
> + * Copyright 2008 IBM Corporation.
> + * Authors: Jerone Young <jyoung5@us.ibm.com>
> + *
> + * This work is licensed under the GNU GPL license version 2 or later.
> + *
> + */
> +
> +#include <stdio.h>
> +#include <sys/types.h>
> +#include <sys/stat.h>
> +#include <fcntl.h>
> +#include <unistd.h>
> +#include <stdlib.h>
> +
> +#include "config.h"
> +#include "ppc440.h"
> +
> +#ifdef CONFIG_LIBFDT
> +#include "libfdt.h"
> +#endif
> +
> +#define DT_PROC_INTERFACE_PATH "/proc/device-tree"
> +
> +/* FUNCTIONS FOR READING FROM DEVICE TREE OF HOST IN /PROC */
> +
> +/* This function reads device-tree property files that are of
> + * a single cell size
> + */
> +uint32_t read_proc_dt_prop_cell(char *path_in_device_tree)
> +{
> +	char *buf = NULL;
> +	int i;
> +	uint32_t num;
> +	FILE *stream;
> +
> +	i = snprintf(buf, 0, "%s/%s", DT_PROC_INTERFACE_PATH,
> +		path_in_device_tree);
> +
> +	buf = (char *)malloc(i);
> +	if (buf = NULL) {
> +		printf("%s: Unable to malloc string buffer buf\n",
> +			__func__);
> +		exit(1);
> +	}
> +
> +	i = snprintf(buf, i+1, "%s/%s",  DT_PROC_INTERFACE_PATH,
> +		path_in_device_tree);
>   

asprintf() is the right thing to do here.  You allocate 'i' bytes but 
then snprintf() to 'i + 1' bytes, that's a buffer overflow.

> +fail:
> +	if (dt_file) 
> +		qemu_free(dt_file);
> +	return NULL;
> +}
> +
> +void dump_device_tree_to_file(void *fdt, char *filename)
> +{
> +	int fd;
> +	fd = open(filename, O_RDWR|O_CREAT);
>   

Need to pass a permission mask when using O_CREAT.

Regards,

Anthony LIguori

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
kvm-ppc-devel mailing list
kvm-ppc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-ppc-devel

WARNING: multiple messages have this Message-ID (diff)
From: Anthony Liguori <anthony@codemonkey.ws>
To: Jerone Young <jyoung5@us.ibm.com>
Cc: kvm-devel@lists.sourceforge.net, kvm-ppc-devel@lists.sourceforge.net
Subject: Re: [PATCH 5 of 7] Add dynamic device tree manipulation & change uboot	loader for PPC bamboo board model
Date: Wed, 19 Mar 2008 14:30:22 -0500	[thread overview]
Message-ID: <47E169CE.5090405@codemonkey.ws> (raw)
In-Reply-To: <8e9da5ddf159eb6cf5a2.1205953278@thinkpad.austin.ibm.com>

Jerone Young wrote:
> # HG changeset patch
> # User Jerone Young <jyoung5@us.ibm.com>
> # Date 1205953012 18000
> # Branch merge
> # Node ID 8e9da5ddf159eb6cf5a292ccbf5f735103b493ef
> # Parent  03925441312877b8350e4af68e475d5d746304d4
> Add dynamic device tree manipulation & change uboot loader for PPC bamboo board model
>
> This patch adds code to dynamically manipulate the device tree when loaded into memory. This allows us to finally have the ability to manipulate the kernel command line & initrd from the qemu command line. This will also let us setup different settings for the board.
>
> This patch also now uses new uboot loader load_uimage() to load kernel image.
>
> Signed-off-by: Jerone Young <jyoung5@us.ibm.com>
>
> diff --git a/qemu/Makefile.target b/qemu/Makefile.target
> --- a/qemu/Makefile.target
> +++ b/qemu/Makefile.target
> @@ -617,7 +617,7 @@ OBJS+= unin_pci.o ppc_chrp.o
>  OBJS+= unin_pci.o ppc_chrp.o
>  # PowerPC 4xx boards
>  OBJS+= pflash_cfi02.o ppc4xx_devs.o ppc405_uc.o ppc405_boards.o
> -OBJS+= ppc440.o ppc440_bamboo.o
> +OBJS+= ppc440.o ppc440_bamboo.o device_tree.o
>  endif
>  ifeq ($(TARGET_BASE_ARCH), mips)
>  OBJS+= mips_r4k.o mips_malta.o mips_pica61.o mips_mipssim.o
> diff --git a/qemu/hw/device_tree.c b/qemu/hw/device_tree.c
> new file mode 100644
> --- /dev/null
> +++ b/qemu/hw/device_tree.c
> @@ -0,0 +1,181 @@
> +/*
> + * Functions to help device tree manipulation using libfdt.
> + * It also provides functions to read entries from device tree proc
> + * interface.
> + *
> + * Copyright 2008 IBM Corporation.
> + * Authors: Jerone Young <jyoung5@us.ibm.com>
> + *
> + * This work is licensed under the GNU GPL license version 2 or later.
> + *
> + */
> +
> +#include <stdio.h>
> +#include <sys/types.h>
> +#include <sys/stat.h>
> +#include <fcntl.h>
> +#include <unistd.h>
> +#include <stdlib.h>
> +
> +#include "config.h"
> +#include "ppc440.h"
> +
> +#ifdef CONFIG_LIBFDT
> +#include "libfdt.h"
> +#endif
> +
> +#define DT_PROC_INTERFACE_PATH "/proc/device-tree"
> +
> +/* FUNCTIONS FOR READING FROM DEVICE TREE OF HOST IN /PROC */
> +
> +/* This function reads device-tree property files that are of
> + * a single cell size
> + */
> +uint32_t read_proc_dt_prop_cell(char *path_in_device_tree)
> +{
> +	char *buf = NULL;
> +	int i;
> +	uint32_t num;
> +	FILE *stream;
> +
> +	i = snprintf(buf, 0, "%s/%s", DT_PROC_INTERFACE_PATH,
> +		path_in_device_tree);
> +
> +	buf = (char *)malloc(i);
> +	if (buf == NULL) {
> +		printf("%s: Unable to malloc string buffer buf\n",
> +			__func__);
> +		exit(1);
> +	}
> +
> +	i = snprintf(buf, i+1, "%s/%s",  DT_PROC_INTERFACE_PATH,
> +		path_in_device_tree);
>   

asprintf() is the right thing to do here.  You allocate 'i' bytes but 
then snprintf() to 'i + 1' bytes, that's a buffer overflow.

> +fail:
> +	if (dt_file) 
> +		qemu_free(dt_file);
> +	return NULL;
> +}
> +
> +void dump_device_tree_to_file(void *fdt, char *filename)
> +{
> +	int fd;
> +	fd = open(filename, O_RDWR|O_CREAT);
>   

Need to pass a permission mask when using O_CREAT.

Regards,

Anthony LIguori

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

  reply	other threads:[~2008-03-19 19:30 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-19 19:01 [kvm-ppc-devel] [PATCH 0 of 7] [v5] PowerPC kvm-userspace patches Jerone Young
2008-03-19 19:01 ` Jerone Young
2008-03-19 19:01 ` [kvm-ppc-devel] [PATCH 1 of 7] Add libfdt to KVM userspace Jerone Young
2008-03-19 19:01   ` Jerone Young
2008-03-19 19:01 ` [kvm-ppc-devel] [PATCH 2 of 7] Add libfdt support to qemu Jerone Young
2008-03-19 19:01   ` Jerone Young
2008-03-19 19:01 ` [kvm-ppc-devel] [PATCH 3 of 7] Create new load_uimage() & gunzip Jerone Young
2008-03-19 19:01   ` [PATCH 3 of 7] Create new load_uimage() & gunzip support to uboot loader in Qemu Jerone Young
2008-03-19 19:25   ` [kvm-ppc-devel] [kvm-devel] [PATCH 3 of 7] Create new Anthony Liguori
2008-03-19 19:25     ` [PATCH 3 of 7] Create new load_uimage() & gunzip support to uboot loader in Qemu Anthony Liguori
2008-03-19 19:01 ` [kvm-ppc-devel] [PATCH 4 of 7] Add PPC 440EP bamboo board device Jerone Young
2008-03-19 19:01   ` [PATCH 4 of 7] Add PPC 440EP bamboo board device tree source & binary into qemu Jerone Young
2008-03-19 19:01 ` [kvm-ppc-devel] [PATCH 5 of 7] Add dynamic device tree manipulation Jerone Young
2008-03-19 19:01   ` [PATCH 5 of 7] Add dynamic device tree manipulation & change uboot loader for PPC bamboo board model Jerone Young
2008-03-19 19:30   ` Anthony Liguori [this message]
2008-03-19 19:30     ` Anthony Liguori
2008-03-19 19:36     ` [kvm-ppc-devel] [kvm-devel] [PATCH 5 of 7] Add dynamic device Jerone Young
2008-03-19 19:36       ` [PATCH 5 of 7] Add dynamic device tree manipulation & change uboot loader for PPC bamboo board model Jerone Young
2008-03-19 19:01 ` [kvm-ppc-devel] [PATCH 6 of 7] Modify PPC bamboo & ppc440 board Jerone Young
2008-03-19 19:01   ` [PATCH 6 of 7] Modify PPC bamboo & ppc440 board models Jerone Young
2008-03-19 19:01 ` [kvm-ppc-devel] [PATCH 7 of 7] Add ability to specify ram on Jerone Young
2008-03-19 19:01   ` [PATCH 7 of 7] Add ability to specify ram on command line for bamboo board model Jerone Young

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=47E169CE.5090405@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=jyoung5@us.ibm.com \
    --cc=kvm-devel@lists.sourceforge.net \
    --cc=kvm-ppc-devel@lists.sourceforge.net \
    /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.