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

Commit 5e54c97d authored by Ken Cox's avatar Ken Cox Committed by Greg Kroah-Hartman
Browse files

Staging: unisys: Remove FAIL macro



The FAIL macro ultimately includes a goto statement which is not allowed
in the kernel.

Signed-off-by: default avatarKen Cox <jkc@redhat.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 097f4c19
Loading
Loading
Loading
Loading
+0 −12
Original line number Diff line number Diff line
@@ -126,18 +126,6 @@ typedef long VMMIO32;/**< #VMMIO pointing to 32-bit data */
 *  @param x the value to return
 */
#define RETINT(x)  do { rc = (x); RETTRACE(x); goto Away; } while (0)
/** Given a typedef/struct/union and a member field name,
 *  return the number of bytes occupied by that field.
 *  @param TYPE     the typedef name, or "struct xx" or "union xx"
 *  @param MEMBER   the name of the member field whose size is to be determined
 *  @return         the size of the field in bytes
 */
#define FAIL(msg, status) do {          \
		ERRDRV("'%s'"					      \
		       ": error (status=%d)\n",			      \
		       msg, status);				      \
		RETINT(status);					      \
	} while (0)
/** Try to evaulate the provided expression, and do a RETINT(x) iff
 *  the expression evaluates to < 0.
 *  @param x the expression to try
+64 −33
Original line number Diff line number Diff line
@@ -57,8 +57,11 @@ visorchannel_create_guts(HOSTADDRESS physaddr, ulong channelBytes,
	void *rc = NULL;

	p = kmalloc(sizeof(VISORCHANNEL), GFP_KERNEL|__GFP_NORETRY);
	if (p == NULL)
		FAIL("allocation failed", 0);
	if (p == NULL) {
		ERRDRV("allocation failed: (status=0)\n");
		rc = NULL;
		goto Away;
	}
	p->memregion = NULL;
	p->needs_lock = needs_lock;
	spin_lock_init(&p->insert_lock);
@@ -73,19 +76,28 @@ visorchannel_create_guts(HOSTADDRESS physaddr, ulong channelBytes,
		    visor_memregion_create_overlapped(parent->memregion,
						      off,
						      sizeof(CHANNEL_HEADER));
	if (p->memregion == NULL)
		FAIL("visor_memregion_create failed", 0);
	if (p->memregion == NULL) {
		ERRDRV("visor_memregion_create failed failed: (status=0)\n");
		rc = NULL;
		goto Away;
	}
	if (visor_memregion_read(p->memregion, 0, &p->chan_hdr,
				 sizeof(CHANNEL_HEADER)) < 0)
		FAIL("visor_memregion_read failed", 0);
				 sizeof(CHANNEL_HEADER)) < 0) {
		ERRDRV("visor_memregion_read failed: (status=0)\n");
		rc = NULL;
		goto Away;
	}
	if (channelBytes == 0)
		/* we had better be a CLIENT of this channel */
		channelBytes = (ulong) p->chan_hdr.Size;
	if (STRUCTSEQUAL(guid, Guid0))
		/* we had better be a CLIENT of this channel */
		guid = p->chan_hdr.Type;
	if (visor_memregion_resize(p->memregion, channelBytes) < 0)
		FAIL("visor_memregion_resize failed", 0);
	if (visor_memregion_resize(p->memregion, channelBytes) < 0) {
		ERRDRV("visor_memregion_resize failed: (status=0)\n");
		rc = NULL;
		goto Away;
	}
	p->size = channelBytes;
	p->guid = guid;

@@ -300,8 +312,10 @@ sig_read_header(VISORCHANNEL *channel, U32 queue,
{
	BOOL rc = FALSE;

	if (channel->chan_hdr.oChannelSpace < sizeof(CHANNEL_HEADER))
		FAIL("oChannelSpace too small", FALSE);
	if (channel->chan_hdr.oChannelSpace < sizeof(CHANNEL_HEADER)) {
		ERRDRV("oChannelSpace too small: (status=%d)\n", rc);
		goto Away;
	}

	/* Read the appropriate SIGNAL_QUEUE_HEADER into local memory. */

@@ -310,7 +324,8 @@ sig_read_header(VISORCHANNEL *channel, U32 queue,
				 sig_hdr, sizeof(SIGNAL_QUEUE_HEADER)) < 0) {
		ERRDRV("queue=%d SIG_QUEUE_OFFSET=%d",
		       queue, (int)SIG_QUEUE_OFFSET(&channel->chan_hdr, queue));
		FAIL("visor_memregion_read of signal queue failed", FALSE);
		ERRDRV("visor_memregion_read of signal queue failed: (status=%d)\n", rc);
		goto Away;
	}
	rc = TRUE;
Away:
@@ -327,14 +342,16 @@ sig_do_data(VISORCHANNEL *channel, U32 queue,
	if (is_write) {
		if (visor_memregion_write(channel->memregion,
					  signal_data_offset,
					  data, sig_hdr->SignalSize) < 0)
			FAIL("visor_memregion_write of signal data failed",
			     FALSE);
					  data, sig_hdr->SignalSize) < 0) {
			ERRDRV("visor_memregion_write of signal data failed: (status=%d)\n", rc);
			goto Away;
		}
	} else {
		if (visor_memregion_read(channel->memregion, signal_data_offset,
					 data, sig_hdr->SignalSize) < 0)
			FAIL("visor_memregion_read of signal data failed",
			     FALSE);
					 data, sig_hdr->SignalSize) < 0) {
			ERRDRV("visor_memregion_read of signal data failed: (status=%d)\n", rc);
			goto Away;
		}
	}
	rc = TRUE;
Away:
@@ -395,19 +412,25 @@ visorchannel_signalremove(VISORCHANNEL *channel, U32 queue, void *msg)
		goto Away;
	}
	sig_hdr.Tail = (sig_hdr.Tail + 1) % sig_hdr.MaxSignalSlots;
	if (!sig_read_data(channel, queue, &sig_hdr, sig_hdr.Tail, msg))
		FAIL("sig_read_data failed", FALSE);
	if (!sig_read_data(channel, queue, &sig_hdr, sig_hdr.Tail, msg)) {
		ERRDRV("sig_read_data failed: (status=%d)\n", rc);
		goto Away;
	}
	sig_hdr.NumSignalsReceived++;

	/* For each data field in SIGNAL_QUEUE_HEADER that was modified,
	 * update host memory.
	 */
	MEMORYBARRIER;
	if (!SIG_WRITE_FIELD(channel, queue, &sig_hdr, Tail))
		FAIL("visor_memregion_write of Tail failed", FALSE);
	if (!SIG_WRITE_FIELD(channel, queue, &sig_hdr, NumSignalsReceived))
		FAIL("visor_memregion_write of NumSignalsReceived failed",
		     FALSE);
	if (!SIG_WRITE_FIELD(channel, queue, &sig_hdr, Tail)) {
		ERRDRV("visor_memregion_write of Tail failed: (status=%d)\n",
		       rc);
		goto Away;
	}
	if (!SIG_WRITE_FIELD(channel, queue, &sig_hdr, NumSignalsReceived)) {
		ERRDRV("visor_memregion_write of NumSignalsReceived failed: (status=%d)\n", rc);
		goto Away;
	}
	rc = TRUE;
Away:
	if (channel->needs_lock)
@@ -434,25 +457,33 @@ visorchannel_signalinsert(VISORCHANNEL *channel, U32 queue, void *msg)
	sig_hdr.Head = ((sig_hdr.Head + 1) % sig_hdr.MaxSignalSlots);
	if (sig_hdr.Head == sig_hdr.Tail) {
		sig_hdr.NumOverflows++;
		if (!SIG_WRITE_FIELD(channel, queue, &sig_hdr, NumOverflows))
			FAIL("visor_memregion_write of NumOverflows failed",
			     FALSE);
		if (!SIG_WRITE_FIELD(channel, queue, &sig_hdr, NumOverflows)) {
			ERRDRV("visor_memregion_write of NumOverflows failed: (status=%d)\n", rc);
			goto Away;
		}
		rc = FALSE;
		goto Away;
	}

	if (!sig_write_data(channel, queue, &sig_hdr, sig_hdr.Head, msg))
		FAIL("sig_write_data failed", FALSE);
	if (!sig_write_data(channel, queue, &sig_hdr, sig_hdr.Head, msg)) {
		ERRDRV("sig_write_data failed: (status=%d)\n", rc);
		goto Away;
	}
	sig_hdr.NumSignalsSent++;

	/* For each data field in SIGNAL_QUEUE_HEADER that was modified,
	 * update host memory.
	 */
	MEMORYBARRIER;
	if (!SIG_WRITE_FIELD(channel, queue, &sig_hdr, Head))
		FAIL("visor_memregion_write of Head failed", FALSE);
	if (!SIG_WRITE_FIELD(channel, queue, &sig_hdr, NumSignalsSent))
		FAIL("visor_memregion_write of NumSignalsSent failed", FALSE);
	if (!SIG_WRITE_FIELD(channel, queue, &sig_hdr, Head)) {
		ERRDRV("visor_memregion_write of Head failed: (status=%d)\n",
		       rc);
		goto Away;
	}
	if (!SIG_WRITE_FIELD(channel, queue, &sig_hdr, NumSignalsSent)) {
		ERRDRV("visor_memregion_write of NumSignalsSent failed: (status=%d)\n", rc);
		goto Away;
	}
	rc = TRUE;
Away:
	if (channel->needs_lock)
+5 −2
Original line number Diff line number Diff line
@@ -84,8 +84,11 @@ visorchipset_file_init(dev_t majorDev, VISORCHANNEL **pControlVm_channel)
		Registered = TRUE;
		INFODRV("Static major number %d registered\n", MAJOR(MajorDev));
	}
	if (cdev_add(&Cdev, MKDEV(MAJOR(MajorDev), 0), 1) < 0)
		FAIL("failed to create char device", -1);
	if (cdev_add(&Cdev, MKDEV(MAJOR(MajorDev), 0), 1) < 0) {
		ERRDRV("failed to create char device: (status=-1)\n");
		rc = -1;
		goto Away;
	}
	INFODRV("Registered char device for %s (major=%d)",
		MYDRVNAME, MAJOR(MajorDev));
	RETINT(0);
+34 −18
Original line number Diff line number Diff line
@@ -136,13 +136,19 @@ MYPROCTYPE *visor_proc_CreateType(struct proc_dir_entry *procDirRoot,
	MYPROCTYPE *rc = NULL, *type = NULL;
	struct proc_dir_entry *parent = NULL;

	if (procDirRoot == NULL)
		FAIL("procDirRoot cannot be NULL!", 0);
	if (name == NULL || name[0] == NULL)
		FAIL("name must contain at least 1 node name!", 0);
	if (procDirRoot == NULL) {
		ERRDRV("procDirRoot cannot be NULL!\n");
		goto Away;
	}
	if (name == NULL || name[0] == NULL) {
		ERRDRV("name must contain at least 1 node name!\n");
		goto Away;
	}
	type = kzalloc(sizeof(MYPROCTYPE), GFP_KERNEL | __GFP_NORETRY);
	if (type == NULL)
		FAIL("out of memory", 0);
	if (type == NULL) {
		ERRDRV("out of memory\n");
		goto Away;
	}
	type->name = name;
	type->propertyNames = propertyNames;
	type->nProperties = 0;
@@ -157,8 +163,10 @@ MYPROCTYPE *visor_proc_CreateType(struct proc_dir_entry *procDirRoot,
	type->procDirs = kzalloc((type->nNames + 1) *
				 sizeof(struct proc_dir_entry *),
				 GFP_KERNEL | __GFP_NORETRY);
	if (type->procDirs == NULL)
		FAIL("out of memory", 0);
	if (type->procDirs == NULL) {
		ERRDRV("out of memory\n");
		goto Away;
	}
	parent = procDirRoot;
	for (i = 0; i < type->nNames; i++) {
		type->procDirs[i] = createProcDir(type->name[i], parent);
@@ -215,11 +223,15 @@ MYPROCOBJECT *visor_proc_CreateObject(MYPROCTYPE *type,
	MYPROCOBJECT *obj = NULL, *rc = NULL;
	int i = 0;

	if (type == NULL)
		FAIL("type cannot be NULL", 0);
	if (type == NULL) {
		ERRDRV("type cannot be NULL\n");
		goto Away;
	}
	obj = kzalloc(sizeof(MYPROCOBJECT), GFP_KERNEL | __GFP_NORETRY);
	if (obj == NULL)
		FAIL("out of memory", 0);
	if (obj == NULL) {
		ERRDRV("out of memory\n");
		goto Away;
	}
	obj->type = type;
	obj->context = context;
	if (name == NULL) {
@@ -230,25 +242,29 @@ MYPROCOBJECT *visor_proc_CreateObject(MYPROCTYPE *type,
		obj->name = kmalloc(obj->namesize, GFP_KERNEL | __GFP_NORETRY);
		if (obj->name == NULL) {
			obj->namesize = 0;
			FAIL("out of memory", 0);
			ERRDRV("out of memory\n");
			goto Away;
		}
		strcpy(obj->name, name);
		obj->procDir = createProcDir(obj->name, type->procDir);
		if (obj->procDir == NULL) {
			rc = NULL;
			goto Away;
		}
	}
	obj->procDirPropertyContexts =
		kzalloc((type->nProperties + 1) * sizeof(PROCDIRENTRYCONTEXT),
			GFP_KERNEL | __GFP_NORETRY);
	if (obj->procDirPropertyContexts == NULL)
		FAIL("out of memory", 0);
	if (obj->procDirPropertyContexts == NULL) {
		ERRDRV("out of memory\n");
		goto Away;
	}
	obj->procDirProperties =
		kzalloc((type->nProperties + 1) * sizeof(struct proc_dir_entry *),
			GFP_KERNEL | __GFP_NORETRY);
	if (obj->procDirProperties == NULL)
		FAIL("out of memory", 0);
	if (obj->procDirProperties == NULL) {
		ERRDRV("out of memory\n");
		goto Away;
	}
	for (i = 0; i < type->nProperties; i++) {
		obj->procDirPropertyContexts[i].procObject = obj;
		obj->procDirPropertyContexts[i].propertyIndex = i;