Revision de5604231ce4bc8db1bc1dcd27d8540cbedf1518 authored by Nick Piggin on 01 February 2010, 11:24:18 UTC, committed by Linus Torvalds on 02 February 2010, 20:50:47 UTC
RCU list walking of the per-cpu vmap cache was broken.  It did not use
RCU primitives, and also the union of free_list and rcu_head is
obviously wrong (because free_list is indeed the list we are RCU
walking).

While we are there, remove a couple of unused fields from an earlier
iteration.

These APIs aren't actually used anywhere, because of problems with the
XFS conversion.  Christoph has now verified that the problems are solved
with these patches.  Also it is an exported interface, so I think it
will be good to be merged now (and Christoph wants to get the XFS
changes into their local tree).

Cc: stable@kernel.org
Cc: linux-mm@kvack.org
Tested-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Nick Piggin <npiggin@suse.de>
--
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 489b24f
Raw File
bcm63xx_pcmcia.h
#ifndef BCM63XX_PCMCIA_H_
#define BCM63XX_PCMCIA_H_

#include <linux/types.h>
#include <linux/timer.h>
#include <pcmcia/ss.h>
#include <bcm63xx_dev_pcmcia.h>

/* socket polling rate in ms */
#define BCM63XX_PCMCIA_POLL_RATE	500

enum {
	CARD_CARDBUS = (1 << 0),
	CARD_PCCARD = (1 << 1),
	CARD_5V = (1 << 2),
	CARD_3V = (1 << 3),
	CARD_XV = (1 << 4),
	CARD_YV = (1 << 5),
};

struct bcm63xx_pcmcia_socket {
	struct pcmcia_socket socket;

	/* platform specific data */
	struct bcm63xx_pcmcia_platform_data *pd;

	/* all regs access are protected by this spinlock */
	spinlock_t lock;

	/* pcmcia registers resource */
	struct resource *reg_res;

	/* base remapped address of registers */
	void __iomem *base;

	/* whether a card is detected at the moment */
	int card_detected;

	/* type of detected card (mask of above enum) */
	u8 card_type;

	/* keep last socket status to implement event reporting */
	unsigned int old_status;

	/* backup of requested socket state */
	socket_state_t requested_state;

	/* timer used for socket status polling */
	struct timer_list timer;

	/* attribute/common memory resources */
	struct resource *attr_res;
	struct resource *common_res;
	struct resource *io_res;

	/* base address of io memory */
	void __iomem *io_base;
};

#endif /* BCM63XX_PCMCIA_H_ */
back to top