Commit 614a7d6a authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Linus Torvalds

[PATCH] fix up newly added jsm driver

 - plug various leaks and use after frees in the remove and
   initialization failure path (some still left)
 - remove useless global list of boards and use pci_set_drvdata instead
 - unobsfucate init path by merging functions together
 - kill various totally useless state variables
 - .. probably more I forgot

Note that the tty part still generates lots of sparse warnings and there's
still a totally useless layer of function pointer indirections, but maybe
someone else will fix that bit up.
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent a2997382
......@@ -93,28 +93,6 @@ enum {
#define JSM_VERSION "jsm: 1.1-1-INKERNEL"
#define JSM_PARTNUM "40002438_A-INKERNEL"
/*
* All the possible states the driver can be while being loaded.
*/
enum {
DRIVER_INITIALIZED = 0,
DRIVER_READY
};
/*
* All the possible states the board can be while booting up.
*/
enum {
BOARD_FAILED = 0,
BOARD_FOUND,
BOARD_READY
};
struct board_id {
u8 *name;
u32 maxports;
};
struct jsm_board;
struct jsm_channel;
......@@ -149,7 +127,6 @@ struct jsm_board
int boardnum; /* Board number: 0-32 */
int type; /* Type of board */
char *name; /* Product Name */
u8 rev; /* PCI revision ID */
struct pci_dev *pci_dev;
u32 maxports; /* MAX ports this board can handle */
......@@ -160,9 +137,6 @@ struct jsm_board
* the interrupt routine from each other.
*/
u32 state; /* State of card. */
wait_queue_head_t state_wait; /* Place to sleep on for state change */
u32 nasync; /* Number of ports on card */
u32 irq; /* Interrupt request number */
......@@ -181,9 +155,6 @@ struct jsm_board
struct jsm_channel *channels[MAXPORTS]; /* array of pointers to our channels. */
char *flipbuf; /* Our flip buffer, alloced if board is found */
u16 dpatype; /* The board "type", as defined by DPA */
u16 dpastatus; /* The board "status", as defined by DPA */
u32 bd_dividend; /* Board/UARTs specific dividend */
struct board_ops *bd_ops;
......@@ -412,12 +383,6 @@ extern struct board_ops jsm_neo_ops;
extern int jsm_debug;
extern int jsm_rawreadok;
extern int jsm_driver_state; /* The state of the driver */
extern char *jsm_driver_state_text[];/* Array of driver state text */
extern spinlock_t jsm_board_head_lock;
extern struct list_head jsm_board_head;
/*************************************************************************
*
* Prototypes for non-static functions used in more than one module
......@@ -431,7 +396,4 @@ void jsm_input(struct jsm_channel *ch);
void jsm_carrier(struct jsm_channel *ch);
void jsm_check_queue_flow_control(struct jsm_channel *ch);
void jsm_create_driver_sysfiles(struct device_driver *);
void jsm_remove_driver_sysfiles(struct device_driver *);
#endif
This diff is collapsed.
......@@ -1012,27 +1012,3 @@ int jsm_tty_write(struct uart_port *port)
return data_count;
}
static ssize_t jsm_driver_version_show(struct device_driver *ddp, char *buf)
{
return snprintf(buf, PAGE_SIZE, "%s\n", JSM_VERSION);
}
static DRIVER_ATTR(version, S_IRUSR, jsm_driver_version_show, NULL);
static ssize_t jsm_driver_state_show(struct device_driver *ddp, char *buf)
{
return snprintf(buf, PAGE_SIZE, "%s\n", jsm_driver_state_text[jsm_driver_state]);
}
static DRIVER_ATTR(state, S_IRUSR, jsm_driver_state_show, NULL);
void jsm_create_driver_sysfiles(struct device_driver *driverfs)
{
driver_create_file(driverfs, &driver_attr_version);
driver_create_file(driverfs, &driver_attr_state);
}
void jsm_remove_driver_sysfiles(struct device_driver *driverfs)
{
driver_remove_file(driverfs, &driver_attr_version);
driver_remove_file(driverfs, &driver_attr_state);
}
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