瀏覽代碼

[PATCH] Replace regular code with appropriate calls to container_of()

Replace a small number of expressions with a call to the "container_of()"
macro.

Signed-off-by: Robert P. J. Day <rpjday@mindspring.com>
Acked-by: Paul Mackerras <paulus@samba.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Stephen Smalley <sds@tycho.nsa.gov>
Cc: James Morris <jmorris@namei.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Robert P. J. Day 18 年之前
父節點
當前提交
b385a144ee
共有 5 個文件被更改,包括 6 次插入10 次删除
  1. 1 1
      drivers/net/ppp_generic.c
  2. 2 4
      drivers/s390/net/lcs.c
  3. 1 3
      drivers/video/sa1100fb.h
  4. 1 1
      include/linux/security.h
  5. 1 1
      security/selinux/hooks.c

+ 1 - 1
drivers/net/ppp_generic.c

@@ -83,7 +83,7 @@ struct ppp_file {
 	int		dead;		/* unit/channel has been shut down */
 	int		dead;		/* unit/channel has been shut down */
 };
 };
 
 
-#define PF_TO_X(pf, X)		((X *)((char *)(pf) - offsetof(X, file)))
+#define PF_TO_X(pf, X)		container_of(pf, X, file)
 
 
 #define PF_TO_PPP(pf)		PF_TO_X(pf, struct ppp)
 #define PF_TO_PPP(pf)		PF_TO_X(pf, struct ppp)
 #define PF_TO_CHANNEL(pf)	PF_TO_X(pf, struct channel)
 #define PF_TO_CHANNEL(pf)	PF_TO_X(pf, struct channel)

+ 2 - 4
drivers/s390/net/lcs.c

@@ -1511,8 +1511,7 @@ lcs_txbuffer_cb(struct lcs_channel *channel, struct lcs_buffer *buffer)
 	LCS_DBF_TEXT(5, trace, "txbuffcb");
 	LCS_DBF_TEXT(5, trace, "txbuffcb");
 	/* Put buffer back to pool. */
 	/* Put buffer back to pool. */
 	lcs_release_buffer(channel, buffer);
 	lcs_release_buffer(channel, buffer);
-	card = (struct lcs_card *)
-		((char *) channel - offsetof(struct lcs_card, write));
+	card = container_of(channel, struct lcs_card, write);
 	if (netif_queue_stopped(card->dev) && netif_carrier_ok(card->dev))
 	if (netif_queue_stopped(card->dev) && netif_carrier_ok(card->dev))
 		netif_wake_queue(card->dev);
 		netif_wake_queue(card->dev);
 	spin_lock(&card->lock);
 	spin_lock(&card->lock);
@@ -1810,8 +1809,7 @@ lcs_get_frames_cb(struct lcs_channel *channel, struct lcs_buffer *buffer)
 		LCS_DBF_TEXT(4, trace, "-eiogpkt");
 		LCS_DBF_TEXT(4, trace, "-eiogpkt");
 		return;
 		return;
 	}
 	}
-	card = (struct lcs_card *)
-		((char *) channel - offsetof(struct lcs_card, read));
+	card = container_of(channel, struct lcs_card, read);
 	offset = 0;
 	offset = 0;
 	while (lcs_hdr->offset != 0) {
 	while (lcs_hdr->offset != 0) {
 		if (lcs_hdr->offset <= 0 ||
 		if (lcs_hdr->offset <= 0 ||

+ 1 - 3
drivers/video/sa1100fb.h

@@ -110,9 +110,7 @@ struct sa1100fb_info {
 #endif
 #endif
 };
 };
 
 
-#define __type_entry(ptr,type,member) ((type *)((char *)(ptr)-offsetof(type,member)))
-
-#define TO_INF(ptr,member)	__type_entry(ptr,struct sa1100fb_info,member)
+#define TO_INF(ptr,member)	container_of(ptr,struct sa1100fb_info,member)
 
 
 #define SA1100_PALETTE_MODE_VAL(bpp)    (((bpp) & 0x018) << 9)
 #define SA1100_PALETTE_MODE_VAL(bpp)    (((bpp) & 0x018) << 9)
 
 

+ 1 - 1
include/linux/security.h

@@ -492,7 +492,7 @@ struct request_sock;
  *	Note that the fown_struct, @fown, is never outside the context of a
  *	Note that the fown_struct, @fown, is never outside the context of a
  *	struct file, so the file structure (and associated security information)
  *	struct file, so the file structure (and associated security information)
  *	can always be obtained:
  *	can always be obtained:
- *		(struct file *)((long)fown - offsetof(struct file,f_owner));
+ *		container_of(fown, struct file, f_owner)
  * 	@tsk contains the structure of task receiving signal.
  * 	@tsk contains the structure of task receiving signal.
  *	@fown contains the file owner information.
  *	@fown contains the file owner information.
  *	@sig is the signal that will be sent.  When 0, kernel sends SIGIO.
  *	@sig is the signal that will be sent.  When 0, kernel sends SIGIO.

+ 1 - 1
security/selinux/hooks.c

@@ -2654,7 +2654,7 @@ static int selinux_file_send_sigiotask(struct task_struct *tsk,
 	struct file_security_struct *fsec;
 	struct file_security_struct *fsec;
 
 
 	/* struct fown_struct is never outside the context of a struct file */
 	/* struct fown_struct is never outside the context of a struct file */
-        file = (struct file *)((long)fown - offsetof(struct file,f_owner));
+        file = container_of(fown, struct file, f_owner);
 
 
 	tsec = tsk->security;
 	tsec = tsk->security;
 	fsec = file->f_security;
 	fsec = file->f_security;