/* * Copyright (C) 2016 Oracle. All Rights Reserved. * * Author: Darrick J. Wong * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it would be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __XFS_REFCOUNT_ITEM_H__ #define __XFS_REFCOUNT_ITEM_H__ /* * There are (currently) two pairs of refcount btree redo item types: * increase and decrease. The log items for these are CUI (refcount * update intent) and CUD (refcount update done). The redo item type * is encoded in the flags field of each xfs_map_extent. * * *I items should be recorded in the *first* of a series of rolled * transactions, and the *D items should be recorded in the same * transaction that records the associated refcountbt updates. * * Should the system crash after the commit of the first transaction * but before the commit of the final transaction in a series, log * recovery will use the redo information recorded by the intent items * to replay the refcountbt metadata updates. */ /* kernel only CUI/CUD definitions */ struct xfs_mount; struct kmem_zone; /* * Max number of extents in fast allocation path. */ #define XFS_CUI_MAX_FAST_EXTENTS 16 /* * Define CUI flag bits. Manipulated by set/clear/test_bit operators. */ #define XFS_CUI_RECOVERED 1 /* * This is the "refcount update intent" log item. It is used to log * the fact that some reverse mappings need to change. It is used in * conjunction with the "refcount update done" log item described * below. * * These log items follow the same rules as struct xfs_efi_log_item; * see the comments about that structure (in xfs_extfree_item.h) for * more details. */ struct xfs_cui_log_item { struct xfs_log_item cui_item; atomic_t cui_refcount; atomic_t cui_next_extent; unsigned long cui_flags; /* misc flags */ struct xfs_cui_log_format cui_format; }; static inline size_t xfs_cui_log_item_sizeof( unsigned int nr) { return offsetof(struct xfs_cui_log_item, cui_format) + xfs_cui_log_format_sizeof(nr); } /* * This is the "refcount update done" log item. It is used to log the * fact that some refcountbt updates mentioned in an earlier cui item * have been performed. */ struct xfs_cud_log_item { struct xfs_log_item cud_item; struct xfs_cui_log_item *cud_cuip; struct xfs_cud_log_format cud_format; }; extern struct kmem_zone *xfs_cui_zone; extern struct kmem_zone *xfs_cud_zone; struct xfs_cui_log_item *xfs_cui_init(struct xfs_mount *, uint); struct xfs_cud_log_item *xfs_cud_init(struct xfs_mount *, struct xfs_cui_log_item *); void xfs_cui_item_free(struct xfs_cui_log_item *); void xfs_cui_release(struct xfs_cui_log_item *); int xfs_cui_recover(struct xfs_mount *mp, struct xfs_cui_log_item *cuip); #endif /* __XFS_REFCOUNT_ITEM_H__ */ 2e2353de00fa288c0cd4'>af_netrom.c
diff options
context:
space:
mode:
authorDan Carpenter <dan.carpenter@oracle.com>2017-01-30 10:55:04 +0100
committerDavid S. Miller <davem@davemloft.net>2017-01-30 16:37:55 -0500
commitcdaf25dfc058ee6f7a7b2e2353de00fa288c0cd4 (patch)
treea45096fd9e8aaeea2eac1f1999a3d17dfeb0d02b /net/netrom/af_netrom.c
parent1930b60352e7e195f55b27cde15d2a8f43342a8b (diff)
smc: some potential use after free bugs
Say we got really unlucky and these failed on the last iteration, then it could lead to a use after free bug. Fixes: cd6851f30386 ("smc: remote memory buffers (RMBs)") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Ursula Braun <ubraun@linux.vnet.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/netrom/af_netrom.c')