summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
4b0e495)
osp_oac_xattr_find_or_add() may get ENOMEM as it tries to allocate
over len=buf->lb_len=XATTR_SIZE_MAX, thus order:5. Use large alloc
instead.
HPE-bug-id: LUS-9551
Signed-off-by: Vitaly Fertman <c17818@cray.com>
Change-Id: I98c08d16d0343cb60f6efcb63d20739103f2af1c
Reviewed-by: Sergey Cheremencev <c17829@cray.com>
Reviewed-by: Andriy Skulysh <c17819@cray.com>
Tested-by: Alexander Lezhoev <c17454@cray.com>
Reviewed-on: https://review.whamcloud.com/40871
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Sergey Cheremencev <sergey.cheremencev@hpe.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
if (atomic_dec_and_test(&oxe->oxe_ref)) {
LASSERT(list_empty(&oxe->oxe_list));
if (atomic_dec_and_test(&oxe->oxe_ref)) {
LASSERT(list_empty(&oxe->oxe_list));
- OBD_FREE(oxe, oxe->oxe_buflen);
+ OBD_FREE_LARGE(oxe, oxe->oxe_buflen);
+ OBD_ALLOC_LARGE(oxe, size);
if (unlikely(!oxe))
return NULL;
if (unlikely(!oxe))
return NULL;
spin_unlock(&obj->opo_lock);
if (tmp) {
spin_unlock(&obj->opo_lock);
if (tmp) {
+ OBD_FREE_LARGE(oxe, size);
bool unlink_only = false;
if (oxe->oxe_buflen < size) {
bool unlink_only = false;
if (oxe->oxe_buflen < size) {
+ OBD_ALLOC_LARGE(new, size);
if (likely(new)) {
INIT_LIST_HEAD(&new->oxe_list);
new->oxe_buflen = size;
if (likely(new)) {
INIT_LIST_HEAD(&new->oxe_list);
new->oxe_buflen = size;
"Still has %d users on the xattr entry %.*s\n",
count-1, (int)oxe->oxe_namelen, oxe->oxe_buf);
"Still has %d users on the xattr entry %.*s\n",
count-1, (int)oxe->oxe_namelen, oxe->oxe_buf);
- OBD_FREE(oxe, oxe->oxe_buflen);
+ OBD_FREE_LARGE(oxe, oxe->oxe_buflen);
}
OBD_FREE_PRE(obj, sizeof(*obj), "slab-freed");
call_rcu(&obj->opo_header.loh_rcu, osp_object_free_rcu);
}
OBD_FREE_PRE(obj, sizeof(*obj), "slab-freed");
call_rcu(&obj->opo_header.loh_rcu, osp_object_free_rcu);