mirror of https://gitee.com/openkylin/linux.git
- Artem's removal of dead code continues (RPX, MBX860)
- Two krealloc() abuse fixes -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.13 (GNU/Linux) iEYEABECAAYFAlGLydsACgkQdwG7hYl686O3ZwCfYIJUdE/VADo53j3SwDbCEa15 pMgAnA13t6dKgC74Xqk5dd65KKaw64WB =nbL9 -----END PGP SIGNATURE----- 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()
This commit is contained in:
commit
f741df1f3a
|
@ -480,23 +480,6 @@ typedef struct scc_enet {
|
|||
#define SICR_ENET_CLKRT ((uint)0x0000003d)
|
||||
#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
|
||||
/* This ENET stuff is for the MPC823 with ethernet on SCC2.
|
||||
* This is unique to the BSE ip-Engine board.
|
||||
|
|
|
@ -68,12 +68,6 @@ MODULE_LICENSE("Dual MPL/GPL");
|
|||
|
||||
#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 */
|
||||
#ifdef CONFIG_ADS
|
||||
#define CONFIG_PCMCIA_SLOT_A
|
||||
|
@ -253,81 +247,6 @@ static irqreturn_t m8xx_interrupt(int irq, void *dev);
|
|||
|
||||
#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 */
|
||||
|
||||
#if defined(CONFIG_FADS)
|
||||
|
@ -419,65 +338,6 @@ static inline int voltage_set(int slot, int vcc, int vpp)
|
|||
|
||||
#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)
|
||||
#include <asm/cpld.h>
|
||||
extern volatile fpga_pc_regs *fpga_pc;
|
||||
|
|
|
@ -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 */
|
||||
int tokens = (dm->length-11)/sizeof(struct calling_interface_token)-1;
|
||||
struct calling_interface_token *new_da_tokens;
|
||||
struct calling_interface_structure *table =
|
||||
container_of(dm, struct calling_interface_structure, header);
|
||||
|
||||
|
@ -296,12 +297,13 @@ static void __init parse_da_table(const struct dmi_header *dm)
|
|||
da_command_address = table->cmdIOAddress;
|
||||
da_command_code = table->cmdIOCode;
|
||||
|
||||
da_tokens = krealloc(da_tokens, (da_num_tokens + tokens) *
|
||||
sizeof(struct calling_interface_token),
|
||||
GFP_KERNEL);
|
||||
new_da_tokens = krealloc(da_tokens, (da_num_tokens + tokens) *
|
||||
sizeof(struct calling_interface_token),
|
||||
GFP_KERNEL);
|
||||
|
||||
if (!da_tokens)
|
||||
if (!new_da_tokens)
|
||||
return;
|
||||
da_tokens = new_da_tokens;
|
||||
|
||||
memcpy(da_tokens+da_num_tokens, table->tokens,
|
||||
sizeof(struct calling_interface_token) * tokens);
|
||||
|
|
|
@ -613,10 +613,13 @@ static __modinit int add_sysfs_param(struct module_kobject *mk,
|
|||
sizeof(*mk->mp) + sizeof(mk->mp->attrs[0]) * (num+1),
|
||||
GFP_KERNEL);
|
||||
if (!new) {
|
||||
kfree(mk->mp);
|
||||
kfree(attrs);
|
||||
err = -ENOMEM;
|
||||
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);
|
||||
if (!attrs) {
|
||||
err = -ENOMEM;
|
||||
|
|
Loading…
Reference in New Issue