Commit f741df1f authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'for-linus-20130509' of git://git.infradead.org/~dwmw2/random-2.6

Pull misc fixes from David Woodhouse:
 "This is some miscellaneous cleanups that don't really belong anywhere
  else (or were ignored), that have been sitting in linux-next for some
  time.  Two of them are fixes resulting from my audit of krealloc()
  usage that don't seem to have elicited any response when I posted
  them, and the other three are patches from Artem removing dead code."

* tag 'for-linus-20130509' of git://git.infradead.org/~dwmw2/random-2.6:
  pcmcia: remove RPX board stuff
  m68k: remove rpxlite stuff
  pcmcia: remove Motorola MBX860 support
  params: Fix potential memory leak in add_sysfs_param()
  dell-laptop: Fix krealloc() misuse in parse_da_table()
parents c67723eb 5950f080
...@@ -480,23 +480,6 @@ typedef struct scc_enet { ...@@ -480,23 +480,6 @@ typedef struct scc_enet {
#define SICR_ENET_CLKRT ((uint)0x0000003d) #define SICR_ENET_CLKRT ((uint)0x0000003d)
#endif #endif
#ifdef CONFIG_RPXLITE
/* This ENET stuff is for the MPC850 with ethernet on SCC2. Some of
* this may be unique to the RPX-Lite configuration.
* Note TENA is on Port B.
*/
#define PA_ENET_RXD ((ushort)0x0004)
#define PA_ENET_TXD ((ushort)0x0008)
#define PA_ENET_TCLK ((ushort)0x0200)
#define PA_ENET_RCLK ((ushort)0x0800)
#define PB_ENET_TENA ((uint)0x00002000)
#define PC_ENET_CLSN ((ushort)0x0040)
#define PC_ENET_RENA ((ushort)0x0080)
#define SICR_ENET_MASK ((uint)0x0000ff00)
#define SICR_ENET_CLKRT ((uint)0x00003d00)
#endif
#ifdef CONFIG_BSEIP #ifdef CONFIG_BSEIP
/* This ENET stuff is for the MPC823 with ethernet on SCC2. /* This ENET stuff is for the MPC823 with ethernet on SCC2.
* This is unique to the BSE ip-Engine board. * This is unique to the BSE ip-Engine board.
......
...@@ -68,12 +68,6 @@ MODULE_LICENSE("Dual MPL/GPL"); ...@@ -68,12 +68,6 @@ MODULE_LICENSE("Dual MPL/GPL");
#if !defined(CONFIG_PCMCIA_SLOT_A) && !defined(CONFIG_PCMCIA_SLOT_B) #if !defined(CONFIG_PCMCIA_SLOT_A) && !defined(CONFIG_PCMCIA_SLOT_B)
/* The RPX series use SLOT_B */
#if defined(CONFIG_RPXCLASSIC) || defined(CONFIG_RPXLITE)
#define CONFIG_PCMCIA_SLOT_B
#define CONFIG_BD_IS_MHZ
#endif
/* The ADS board use SLOT_A */ /* The ADS board use SLOT_A */
#ifdef CONFIG_ADS #ifdef CONFIG_ADS
#define CONFIG_PCMCIA_SLOT_A #define CONFIG_PCMCIA_SLOT_A
...@@ -253,81 +247,6 @@ static irqreturn_t m8xx_interrupt(int irq, void *dev); ...@@ -253,81 +247,6 @@ static irqreturn_t m8xx_interrupt(int irq, void *dev);
#define PCMCIA_BMT_LIMIT (15*4) /* Bus Monitor Timeout value */ #define PCMCIA_BMT_LIMIT (15*4) /* Bus Monitor Timeout value */
/* ------------------------------------------------------------------------- */
/* board specific stuff: */
/* voltage_set(), hardware_enable() and hardware_disable() */
/* ------------------------------------------------------------------------- */
/* RPX Boards from Embedded Planet */
#if defined(CONFIG_RPXCLASSIC) || defined(CONFIG_RPXLITE)
/* The RPX boards seems to have it's bus monitor timeout set to 6*8 clocks.
* SYPCR is write once only, therefore must the slowest memory be faster
* than the bus monitor or we will get a machine check due to the bus timeout.
*/
#define PCMCIA_BOARD_MSG "RPX CLASSIC or RPX LITE"
#undef PCMCIA_BMT_LIMIT
#define PCMCIA_BMT_LIMIT (6*8)
static int voltage_set(int slot, int vcc, int vpp)
{
u32 reg = 0;
switch (vcc) {
case 0:
break;
case 33:
reg |= BCSR1_PCVCTL4;
break;
case 50:
reg |= BCSR1_PCVCTL5;
break;
default:
return 1;
}
switch (vpp) {
case 0:
break;
case 33:
case 50:
if (vcc == vpp)
reg |= BCSR1_PCVCTL6;
else
return 1;
break;
case 120:
reg |= BCSR1_PCVCTL7;
default:
return 1;
}
if (!((vcc == 50) || (vcc == 0)))
return 1;
/* first, turn off all power */
out_be32(((u32 *) RPX_CSR_ADDR),
in_be32(((u32 *) RPX_CSR_ADDR)) & ~(BCSR1_PCVCTL4 |
BCSR1_PCVCTL5 |
BCSR1_PCVCTL6 |
BCSR1_PCVCTL7));
/* enable new powersettings */
out_be32(((u32 *) RPX_CSR_ADDR), in_be32(((u32 *) RPX_CSR_ADDR)) | reg);
return 0;
}
#define socket_get(_slot_) PCMCIA_SOCKET_KEY_5V
#define hardware_enable(_slot_) /* No hardware to enable */
#define hardware_disable(_slot_) /* No hardware to disable */
#endif /* CONFIG_RPXCLASSIC */
/* FADS Boards from Motorola */ /* FADS Boards from Motorola */
#if defined(CONFIG_FADS) #if defined(CONFIG_FADS)
...@@ -419,65 +338,6 @@ static inline int voltage_set(int slot, int vcc, int vpp) ...@@ -419,65 +338,6 @@ static inline int voltage_set(int slot, int vcc, int vpp)
#endif #endif
/* ------------------------------------------------------------------------- */
/* Motorola MBX860 */
#if defined(CONFIG_MBX)
#define PCMCIA_BOARD_MSG "MBX"
static int voltage_set(int slot, int vcc, int vpp)
{
u8 reg = 0;
switch (vcc) {
case 0:
break;
case 33:
reg |= CSR2_VCC_33;
break;
case 50:
reg |= CSR2_VCC_50;
break;
default:
return 1;
}
switch (vpp) {
case 0:
break;
case 33:
case 50:
if (vcc == vpp)
reg |= CSR2_VPP_VCC;
else
return 1;
break;
case 120:
if ((vcc == 33) || (vcc == 50))
reg |= CSR2_VPP_12;
else
return 1;
default:
return 1;
}
/* first, turn off all power */
out_8((u8 *) MBX_CSR2_ADDR,
in_8((u8 *) MBX_CSR2_ADDR) & ~(CSR2_VCC_MASK | CSR2_VPP_MASK));
/* enable new powersettings */
out_8((u8 *) MBX_CSR2_ADDR, in_8((u8 *) MBX_CSR2_ADDR) | reg);
return 0;
}
#define socket_get(_slot_) PCMCIA_SOCKET_KEY_5V
#define hardware_enable(_slot_) /* No hardware to enable */
#define hardware_disable(_slot_) /* No hardware to disable */
#endif /* CONFIG_MBX */
#if defined(CONFIG_PRxK) #if defined(CONFIG_PRxK)
#include <asm/cpld.h> #include <asm/cpld.h>
extern volatile fpga_pc_regs *fpga_pc; extern volatile fpga_pc_regs *fpga_pc;
......
...@@ -284,6 +284,7 @@ static void __init parse_da_table(const struct dmi_header *dm) ...@@ -284,6 +284,7 @@ static void __init parse_da_table(const struct dmi_header *dm)
{ {
/* Final token is a terminator, so we don't want to copy it */ /* Final token is a terminator, so we don't want to copy it */
int tokens = (dm->length-11)/sizeof(struct calling_interface_token)-1; int tokens = (dm->length-11)/sizeof(struct calling_interface_token)-1;
struct calling_interface_token *new_da_tokens;
struct calling_interface_structure *table = struct calling_interface_structure *table =
container_of(dm, struct calling_interface_structure, header); container_of(dm, struct calling_interface_structure, header);
...@@ -296,12 +297,13 @@ static void __init parse_da_table(const struct dmi_header *dm) ...@@ -296,12 +297,13 @@ static void __init parse_da_table(const struct dmi_header *dm)
da_command_address = table->cmdIOAddress; da_command_address = table->cmdIOAddress;
da_command_code = table->cmdIOCode; da_command_code = table->cmdIOCode;
da_tokens = krealloc(da_tokens, (da_num_tokens + tokens) * new_da_tokens = krealloc(da_tokens, (da_num_tokens + tokens) *
sizeof(struct calling_interface_token), sizeof(struct calling_interface_token),
GFP_KERNEL); GFP_KERNEL);
if (!da_tokens) if (!new_da_tokens)
return; return;
da_tokens = new_da_tokens;
memcpy(da_tokens+da_num_tokens, table->tokens, memcpy(da_tokens+da_num_tokens, table->tokens,
sizeof(struct calling_interface_token) * tokens); sizeof(struct calling_interface_token) * tokens);
......
...@@ -613,10 +613,13 @@ static __modinit int add_sysfs_param(struct module_kobject *mk, ...@@ -613,10 +613,13 @@ static __modinit int add_sysfs_param(struct module_kobject *mk,
sizeof(*mk->mp) + sizeof(mk->mp->attrs[0]) * (num+1), sizeof(*mk->mp) + sizeof(mk->mp->attrs[0]) * (num+1),
GFP_KERNEL); GFP_KERNEL);
if (!new) { if (!new) {
kfree(mk->mp); kfree(attrs);
err = -ENOMEM; err = -ENOMEM;
goto fail; goto fail;
} }
/* Despite looking like the typical realloc() bug, this is safe.
* We *want* the old 'attrs' to be freed either way, and we'll store
* the new one in the success case. */
attrs = krealloc(attrs, sizeof(new->grp.attrs[0])*(num+2), GFP_KERNEL); attrs = krealloc(attrs, sizeof(new->grp.attrs[0])*(num+2), GFP_KERNEL);
if (!attrs) { if (!attrs) {
err = -ENOMEM; err = -ENOMEM;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment