All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Ingo Molnar <mingo@elte.hu>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	linux-kernel@vger.kernel.org,
	Thomas Gleixner <tglx@linutronix.de>,
	"H. Peter Anvin" <hpa@zytor.com>, Yinghai Lu <yinghai.lu@sun.com>,
	Yinghai Lu <yhlu.kernel@gmail.com>,
	jbarnes@virtuousgeek.org
Subject: Re: [git pull] "big box" x86 changes, boot protocol
Date: Sat, 26 Apr 2008 13:39:28 -0700	[thread overview]
Message-ID: <20080426133928.a6f40caa.akpm@linux-foundation.org> (raw)
In-Reply-To: <20080426195407.GA13729@elte.hu>

On Sat, 26 Apr 2008 21:54:07 +0200 Ingo Molnar <mingo@elte.hu> wrote:

> 
> Linus, please pull the following x86 changes from:
> 
>    git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86-bigbox-bootparam.git for-linus
> 
> these are boot parameter extensions for really large SGI UV boxes. The 
> change was seen and acked by the boot protocol guys. (well, Peter that 
> is ;-)
> 
> ...
>
> +void __init free_early(unsigned long start, unsigned long end)
> +{
> +	struct early_res *r;
> +	int i, j;
> +
> +	for (i = 0; i < MAX_EARLY_RES && early_res[i].end; i++) {
> +		r = &early_res[i];
> +		if (start == r->start && end == r->end)
> +			break;
> +	}
> +	if (i >= MAX_EARLY_RES || !early_res[i].end)
> +		panic("free_early on not reserved area: %lx-%lx!", start, end);
> +
> +	for (j = i + 1; j < MAX_EARLY_RES && early_res[j].end; j++)
> +		;
> +
> +	memcpy(&early_res[i], &early_res[i + 1],
> +	       (j - 1 - i) * sizeof(struct early_res));

nit: memcpy() shouldn't be used for overlapping copies.  It happens to be
OK (for dst<src) in the kernel implementations.  We hope.

> +	early_res[j - 1].end = 0;
> +}
> +

> +static ssize_t
> +setup_data_read(struct file *file, char __user *user_buf, size_t count,
> +		loff_t *ppos)
> +{
> +	struct setup_data_node *node = file->private_data;
> +	unsigned long remain;
> +	loff_t pos = *ppos;
> +	struct page *pg;
> +	void *p;
> +	u64 pa;
> +
> +	if (pos < 0)
> +		return -EINVAL;
> +	if (pos >= node->len)
> +		return 0;
> +
> +	if (count > node->len - pos)
> +		count = node->len - pos;
> +	pa = node->paddr + sizeof(struct setup_data) + pos;
> +	pg = pfn_to_page((pa + count - 1) >> PAGE_SHIFT);
> +	if (PageHighMem(pg)) {
> +		p = ioremap_cache(pa, count);
> +		if (!p)
> +			return -ENXIO;
> +	} else {
> +		p = __va(pa);
> +	}
> +
> +	remain = copy_to_user(user_buf, p, count);
> +
> +	if (PageHighMem(pg))
> +		iounmap(p);
> +
> +	if (remain)
> +		return -EFAULT;
> +
> +	*ppos = pos + count;
> +
> +	return count;
> +}

nit2: a read() function should return the number of bytes copied, and
should advance the file pointer by that much.  This code fails to do this
when a partial copy_to_user() occurs.

But we've made that mistake in many places and it doesn't appear to matter.

  reply	other threads:[~2008-04-26 20:40 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-26 18:55 [RFC git pull] "big box" x86 changes Ingo Molnar
2008-04-26 19:05 ` Stefan Richter
2008-04-26 19:21   ` Ingo Molnar
2008-04-26 19:12 ` Linus Torvalds
2008-04-26 19:41   ` [git pull] "big box" x86 changes, bootmem/sparsemem Ingo Molnar
2008-04-26 19:52     ` Linus Torvalds
2008-04-26 20:07       ` Ingo Molnar
2008-04-26 20:08       ` [git pull] "big box" x86 changes, bootmem/sparsemem, #2 Ingo Molnar
2008-04-26 20:30         ` Linus Torvalds
2008-04-26 20:55           ` [git pull] "big box" x86 changes, bootmem/sparsemem, #3 Ingo Molnar
2008-04-27 22:48     ` [git pull] "big box" x86 changes, bootmem/sparsemem Johannes Weiner
2008-04-27 23:46       ` Ingo Molnar
2008-04-28  0:19         ` Johannes Weiner
2008-04-28  0:40           ` [patch] mm: node-setup agnostic free_bootmem() Ingo Molnar
2008-04-28  1:48             ` Yinghai Lu
2008-04-28 16:54               ` Johannes Weiner
2008-04-28 19:11                 ` Yinghai Lu
2008-04-28 19:55                   ` Yinghai Lu
2008-04-30 10:50                     ` Johannes Weiner
2008-04-30 16:22                       ` Yinghai Lu
2008-04-30 17:52                         ` Johannes Weiner
2008-04-30 20:30                           ` Yinghai Lu
2008-04-28 16:49             ` Johannes Weiner
2008-04-29 14:25               ` Ingo Molnar
2008-04-30 10:52                 ` Johannes Weiner
2008-04-28  0:33       ` [git pull] "big box" x86 changes, bootmem/sparsemem Yinghai Lu
2008-04-28 16:58         ` Johannes Weiner
2008-04-26 19:54   ` [git pull] "big box" x86 changes, boot protocol Ingo Molnar
2008-04-26 20:39     ` Andrew Morton [this message]
2008-04-26 21:06       ` Adrian Bunk
2008-04-26 21:10         ` H. Peter Anvin
2008-04-26 21:11         ` Linus Torvalds
2008-04-26 21:17           ` Ingo Molnar
2008-04-26 23:37       ` Jeremy Fitzhardinge
2008-04-27 11:21     ` Ian Campbell
2008-04-27 19:29       ` H. Peter Anvin
2008-04-28 15:27       ` Ingo Molnar
2008-04-26 20:24   ` [RFC git pull] "big box" x86 changes, GART Ingo Molnar
2008-04-26 20:26     ` Ingo Molnar
2008-04-26 21:55   ` [git pull] "big box" x86 changes, PCI Ingo Molnar
2008-04-27 16:30     ` Jesse Barnes
2008-04-28 15:38       ` Ingo Molnar
2008-04-28 20:34     ` Jesse Barnes
2008-04-28 22:53       ` Yinghai Lu
2008-04-28 23:27       ` [PATCH] x86/pci: remove flag in pci_cfg_space_size_ext Yinghai Lu
2008-04-29 16:14         ` Jesse Barnes
2008-04-29 22:05           ` Ingo Molnar
2008-04-29 22:34             ` Jesse Barnes
2008-04-26 22:17 ` [RFC git pull] "big box" x86 changes Andi Kleen
2008-04-27  3:14   ` Yinghai Lu
2008-04-27  8:30     ` Andi Kleen
2008-04-27  8:32     ` [RFC git pull] "big box" x86 changes II Andi Kleen

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=20080426133928.a6f40caa.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=hpa@zytor.com \
    --cc=jbarnes@virtuousgeek.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=yhlu.kernel@gmail.com \
    --cc=yinghai.lu@sun.com \
    /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.