@ -16,9 +16,6 @@
# include "internal.h"
# define CREATE_TRACE_POINTS
# include <trace/events/kmem.h>
/**
* kstrdup - allocate space for and copy an existing string
* @ s : the string to duplicate
@ -112,97 +109,6 @@ void *memdup_user(const void __user *src, size_t len)
}
EXPORT_SYMBOL ( memdup_user ) ;
static __always_inline void * __do_krealloc ( const void * p , size_t new_size ,
gfp_t flags )
{
void * ret ;
size_t ks = 0 ;
if ( p )
ks = ksize ( p ) ;
if ( ks > = new_size )
return ( void * ) p ;
ret = kmalloc_track_caller ( new_size , flags ) ;
if ( ret & & p )
memcpy ( ret , p , ks ) ;
return ret ;
}
/**
* __krealloc - like krealloc ( ) but don ' t free @ p .
* @ p : object to reallocate memory for .
* @ new_size : how many bytes of memory are required .
* @ flags : the type of memory to allocate .
*
* This function is like krealloc ( ) except it never frees the originally
* allocated buffer . Use this if you don ' t want to free the buffer immediately
* like , for example , with RCU .
*/
void * __krealloc ( const void * p , size_t new_size , gfp_t flags )
{
if ( unlikely ( ! new_size ) )
return ZERO_SIZE_PTR ;
return __do_krealloc ( p , new_size , flags ) ;
}
EXPORT_SYMBOL ( __krealloc ) ;
/**
* krealloc - reallocate memory . The contents will remain unchanged .
* @ p : object to reallocate memory for .
* @ new_size : how many bytes of memory are required .
* @ flags : the type of memory to allocate .
*
* The contents of the object pointed to are preserved up to the
* lesser of the new and old sizes . If @ p is % NULL , krealloc ( )
* behaves exactly like kmalloc ( ) . If @ new_size is 0 and @ p is not a
* % NULL pointer , the object pointed to is freed .
*/
void * krealloc ( const void * p , size_t new_size , gfp_t flags )
{
void * ret ;
if ( unlikely ( ! new_size ) ) {
kfree ( p ) ;
return ZERO_SIZE_PTR ;
}
ret = __do_krealloc ( p , new_size , flags ) ;
if ( ret & & p ! = ret )
kfree ( p ) ;
return ret ;
}
EXPORT_SYMBOL ( krealloc ) ;
/**
* kzfree - like kfree but zero memory
* @ p : object to free memory of
*
* The memory of the object @ p points to is zeroed before freed .
* If @ p is % NULL , kzfree ( ) does nothing .
*
* Note : this function zeroes the whole allocated buffer which can be a good
* deal bigger than the requested buffer size passed to kmalloc ( ) . So be
* careful when using this function in performance sensitive code .
*/
void kzfree ( const void * p )
{
size_t ks ;
void * mem = ( void * ) p ;
if ( unlikely ( ZERO_OR_NULL_PTR ( mem ) ) )
return ;
ks = ksize ( mem ) ;
memset ( mem , 0 , ks ) ;
kfree ( mem ) ;
}
EXPORT_SYMBOL ( kzfree ) ;
/*
* strndup_user - duplicate an existing string from user space
* @ s : The string to duplicate
@ -504,11 +410,3 @@ out_mm:
out :
return res ;
}
/* Tracepoints definitions. */
EXPORT_TRACEPOINT_SYMBOL ( kmalloc ) ;
EXPORT_TRACEPOINT_SYMBOL ( kmem_cache_alloc ) ;
EXPORT_TRACEPOINT_SYMBOL ( kmalloc_node ) ;
EXPORT_TRACEPOINT_SYMBOL ( kmem_cache_alloc_node ) ;
EXPORT_TRACEPOINT_SYMBOL ( kfree ) ;
EXPORT_TRACEPOINT_SYMBOL ( kmem_cache_free ) ;