Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3d65692a authored by Christoph Hellwig's avatar Christoph Hellwig Committed by James Bottomley
Browse files

[SCSI] aic7xxx: remove ahc_find_softc



there's absolutely no reason not to trust the driver private data

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 6bc9dace
Loading
Loading
Loading
Loading
+6 −18
Original line number Diff line number Diff line
@@ -190,25 +190,13 @@ aic7770_eisa_dev_probe(struct device *dev)
static int
aic7770_eisa_dev_remove(struct device *dev)
{
	struct ahc_softc *ahc;
	u_long l;

	/*
	 * We should be able to just perform
	 * the free directly, but check our
	 * list for extra sanity.
	 */
	ahc_list_lock(&l);
	ahc = ahc_find_softc((struct ahc_softc *)dev->driver_data);
	if (ahc != NULL) {
	struct ahc_softc *ahc = dev_get_drvata(dev);
	u_long s;

	ahc_lock(ahc, &s);
	ahc_intr_enable(ahc, FALSE);
	ahc_unlock(ahc, &s);
	ahc_free(ahc);
	}
	ahc_list_unlock(&l);

	return (0);
}
+0 −1
Original line number Diff line number Diff line
@@ -1200,7 +1200,6 @@ void ahc_pause_and_flushwork(struct ahc_softc *ahc);
int			 ahc_suspend(struct ahc_softc *ahc); 
int			 ahc_resume(struct ahc_softc *ahc);
void			 ahc_softc_insert(struct ahc_softc *);
struct ahc_softc	*ahc_find_softc(struct ahc_softc *ahc);
void			 ahc_set_unit(struct ahc_softc *, int);
void			 ahc_set_name(struct ahc_softc *, char *);
void			 ahc_alloc_scbs(struct ahc_softc *ahc);
+0 −16
Original line number Diff line number Diff line
@@ -3934,22 +3934,6 @@ ahc_softc_insert(struct ahc_softc *ahc)
	ahc->init_level++;
}

/*
 * Verify that the passed in softc pointer is for a
 * controller that is still configured.
 */
struct ahc_softc *
ahc_find_softc(struct ahc_softc *ahc)
{
	struct ahc_softc *list_ahc;

	TAILQ_FOREACH(list_ahc, &ahc_tailq, links) {
		if (list_ahc == ahc)
			return (ahc);
	}
	return (NULL);
}

void
ahc_set_unit(struct ahc_softc *ahc, int unit)
{
+9 −19
Original line number Diff line number Diff line
@@ -140,27 +140,17 @@ struct pci_driver aic7xxx_pci_driver = {
static void
ahc_linux_pci_dev_remove(struct pci_dev *pdev)
{
	struct ahc_softc *ahc;
	u_long l;

	/*
	 * We should be able to just perform
	 * the free directly, but check our
	 * list for extra sanity.
	 */
	ahc_list_lock(&l);
	ahc = ahc_find_softc((struct ahc_softc *)pci_get_drvdata(pdev));
	if (ahc != NULL) {
	struct ahc_softc *ahc = pci_get_drvdata(pdev);
	u_long s;

	ahc_list_lock(&s);
	TAILQ_REMOVE(&ahc_tailq, ahc, links);
		ahc_list_unlock(&l);
	ahc_list_unlock(&s);

	ahc_lock(ahc, &s);
	ahc_intr_enable(ahc, FALSE);
	ahc_unlock(ahc, &s);
	ahc_free(ahc);
	} else
		ahc_list_unlock(&l);
}

static int
+1 −9
Original line number Diff line number Diff line
@@ -297,20 +297,13 @@ int
ahc_linux_proc_info(struct Scsi_Host *shost, char *buffer, char **start,
		    off_t offset, int length, int inout)
{
	struct	ahc_softc *ahc;
	struct	ahc_softc *ahc = *(struct ahc_softc **)shost->hostdata;
	struct	info_str info;
	char	ahc_info[256];
	u_long	s;
	u_int	max_targ;
	u_int	i;
	int	retval;

	retval = -EINVAL;
	ahc_list_lock(&s);
	ahc = ahc_find_softc(*(struct ahc_softc **)shost->hostdata);
	if (ahc == NULL)
		goto done;

	 /* Has data been written to the file? */ 
	if (inout == TRUE) {
		retval = ahc_proc_write_seeprom(ahc, buffer, length);
@@ -372,6 +365,5 @@ ahc_linux_proc_info(struct Scsi_Host *shost, char *buffer, char **start,
	}
	retval = info.pos > info.offset ? info.pos - info.offset : 0;
done:
	ahc_list_unlock(&s);
	return (retval);
}